| // 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(), 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) |