Chromium Code Reviews| 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()); |
|
siva
2017/07/18 22:49:07
KernelReader seems to have a zone_ field so I gues
sivachandra
2017/07/19 00:14:22
This new method is a static method. So, kernel fie
|
| + |
| + TranslationHelper translation_helper( |
| + Thread::Current(), script.kernel_string_offsets(), |
|
siva
2017/07/18 22:49:07
KernelReader also has a thread_ field that you sho
sivachandra
2017/07/19 00:14:22
Same reason as above that this is a static method.
|
| + 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(); |