Chromium Code Reviews| Index: runtime/vm/kernel_reader.cc |
| diff --git a/runtime/vm/kernel_reader.cc b/runtime/vm/kernel_reader.cc |
| index 7e8f6f44fb5d5b7767102883c10fd0df805a63f2..8a7a18f866ae0186f9bbdb2b92c5b5669aea059c 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())); |
| + const dart::String& init_name = dart::String::Handle( |
| + zone, Symbols::FromConcat(thread, Symbols::InitPrefix(), |
| + dart::String::Handle(zone, field.name()))); |
|
kustermann
2016/11/18 18:38:15
You could use just one String::Handle and reuse it
Vyacheslav Egorov (Google)
2016/11/18 18:48:45
Done.
|
| + |
| + // 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) |