Index: runtime/vm/precompiler.cc |
diff --git a/runtime/vm/precompiler.cc b/runtime/vm/precompiler.cc |
index 5c504582ad160bc9a5eb2a055fed061e7c46b561..8d72d929abe6c6db84d12611f4966a5a61782a1d 100644 |
--- a/runtime/vm/precompiler.cc |
+++ b/runtime/vm/precompiler.cc |
@@ -1118,12 +1118,20 @@ RawFunction* Precompiler::CompileStaticInitializer(const Field& field, |
bool compute_type) { |
ASSERT(field.is_static()); |
Thread* thread = Thread::Current(); |
- StackZone zone(thread); |
+ StackZone stack_zone(thread); |
+ Zone* zone = stack_zone.GetZone(); |
+ |
+ ParsedFunction* parsed_function; |
+ // Check if this field is comming from the Kernel binary. |
+ if (field.kernel_field() != NULL) { |
+ parsed_function = kernel::ParseStaticFieldInitializer(zone, field); |
+ } else { |
+ parsed_function = Parser::ParseStaticFieldInitializer(field); |
+ parsed_function->AllocateVariables(); |
+ } |
- ParsedFunction* parsed_function = Parser::ParseStaticFieldInitializer(field); |
- parsed_function->AllocateVariables(); |
- DartPrecompilationPipeline pipeline(zone.GetZone()); |
+ DartPrecompilationPipeline pipeline(zone); |
PrecompileParsedFunctionHelper helper(/* precompiler = */ NULL, |
parsed_function, |
/* optimized = */ true); |