Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(526)

Unified Diff: runtime/vm/kernel_reader.cc

Issue 2979163002: Allow setting breakpoints in function literal field initializers under --dfe. (Closed)
Patch Set: Address comments on patch set 2 Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/kernel_reader.h ('k') | runtime/vm/kernel_to_il.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/kernel_reader.cc
diff --git a/runtime/vm/kernel_reader.cc b/runtime/vm/kernel_reader.cc
index 6d9a944cf86920a3c40ded06df66a65878284de7..c014d3337f42713cd01bc4a221b96ef104811ef7 100644
--- a/runtime/vm/kernel_reader.cc
+++ b/runtime/vm/kernel_reader.cc
@@ -9,6 +9,7 @@
#include "vm/dart_api_impl.h"
#include "vm/kernel_binary.h"
#include "vm/kernel_binary_flowgraph.h"
+#include "vm/kernel_to_il.h"
#include "vm/longjump.h"
#include "vm/object_store.h"
#include "vm/parser.h"
@@ -881,6 +882,29 @@ RawFunction::Kind KernelReader::GetFunctionType(
}
}
+bool KernelReader::FieldHasFunctionLiteralInitializer(const dart::Field& field,
+ TokenPosition* start,
+ TokenPosition* end) {
+ dart::Zone* zone = Thread::Current()->zone();
+ const Script& script = Script::Handle(zone, field.Script());
+
+ TranslationHelper translation_helper(
+ Thread::Current(), script.kernel_string_offsets(),
+ script.kernel_string_data(), script.kernel_canonical_names());
+
+ kernel::StreamingFlowGraphBuilder* builder =
+ new kernel::StreamingFlowGraphBuilder(&translation_helper, zone,
+ script.kernel_data(),
+ script.kernel_data_size());
+
+ kernel::FieldHelper field_helper(builder, field.kernel_offset());
+ field_helper.ReadUntilExcluding(kernel::FieldHelper::kEnd, true);
+ bool result = field_helper.FieldHasFunctionLiteralInitializer(start, end);
+
+ delete builder;
+ return result;
+}
+
ParsedFunction* ParseStaticFieldInitializer(Zone* zone,
const dart::Field& field) {
Thread* thread = Thread::Current();
« no previous file with comments | « runtime/vm/kernel_reader.h ('k') | runtime/vm/kernel_to_il.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698