| // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| #include "vm/kernel.h" |
| #include "vm/compiler/frontend/kernel_binary_flowgraph.h" |
| |
| #if !defined(DART_PRECOMPILED_RUNTIME) |
| namespace dart { |
| |
| 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()); |
| translation_helper.InitFromScript(script); |
| |
| StreamingFlowGraphBuilder builder(&translation_helper, field.Script(), zone, |
| TypedData::Handle(zone, field.KernelData()), |
| field.KernelDataProgramOffset()); |
| builder.SetOffset(field.kernel_offset()); |
| 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) |