Index: runtime/vm/kernel.cc |
diff --git a/runtime/vm/kernel.cc b/runtime/vm/kernel.cc |
index 6e718444c48c1eeba3afa5021c9ee6ef1e48aab0..45d6e94d4ed2e14158b853baa4714c6d195f73a8 100644 |
--- a/runtime/vm/kernel.cc |
+++ b/runtime/vm/kernel.cc |
@@ -3,11 +3,32 @@ |
// BSD-style license that can be found in the LICENSE file. |
#include "vm/kernel.h" |
+#include "vm/kernel_binary_flowgraph.h" |
#if !defined(DART_PRECOMPILED_RUNTIME) |
namespace dart { |
-namespace kernel {} // namespace kernel |
+namespace kernel { |
+ |
+bool FieldHasFunctionLiteralInitializer(const Field& field, |
+ TokenPosition* start, |
+ TokenPosition* end) { |
+ 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()); |
+ |
+ StreamingFlowGraphBuilder builder( |
+ &translation_helper, zone, field.kernel_offset(), |
+ TypedData::Handle(zone, field.kernel_data())); |
+ kernel::FieldHelper field_helper(&builder); |
+ field_helper.ReadUntilExcluding(kernel::FieldHelper::kEnd, true); |
+ return field_helper.FieldHasFunctionLiteralInitializer(start, end); |
+} |
+ |
+} // namespace kernel |
} // namespace dart |
#endif // !defined(DART_PRECOMPILED_RUNTIME) |