Index: runtime/vm/kernel_reader.cc |
diff --git a/runtime/vm/kernel_reader.cc b/runtime/vm/kernel_reader.cc |
index 7e8f6f44fb5d5b7767102883c10fd0df805a63f2..fd54c10420654fecda9d386666667d19afe0fb97 100644 |
--- a/runtime/vm/kernel_reader.cc |
+++ b/runtime/vm/kernel_reader.cc |
@@ -671,6 +671,35 @@ RawFunction::Kind KernelReader::GetFunctionType(Procedure* kernel_procedure) { |
} |
+ParsedFunction* ParseStaticFieldInitializer(Zone* zone, |
+ const dart::Field& field) { |
+ Thread* thread = Thread::Current(); |
+ kernel::Field* kernel_field = kernel::Field::Cast( |
+ reinterpret_cast<kernel::Node*>(field.kernel_field())); |
+ |
+ dart::String& init_name = dart::String::Handle(zone, field.name()); |
+ init_name = Symbols::FromConcat(thread, Symbols::InitPrefix(), init_name); |
+ |
+ // Create a static initializer. |
+ const dart::Class& owner = dart::Class::Handle(zone, field.Owner()); |
+ const Function& initializer_fun = Function::ZoneHandle( |
+ zone, |
+ dart::Function::New(init_name, RawFunction::kImplicitStaticFinalGetter, |
+ true, // is_static |
+ false, // is_const |
+ false, // is_abstract |
+ false, // is_external |
+ false, // is_native |
+ owner, TokenPosition::kNoSource)); |
+ initializer_fun.set_kernel_function(kernel_field); |
+ initializer_fun.set_result_type(AbstractType::Handle(zone, field.type())); |
+ initializer_fun.set_is_debuggable(false); |
+ initializer_fun.set_is_reflectable(false); |
+ initializer_fun.set_is_inlinable(false); |
+ return new (zone) ParsedFunction(thread, initializer_fun); |
+} |
+ |
+ |
} // namespace kernel |
} // namespace dart |
#endif // !defined(DART_PRECOMPILED_RUNTIME) |