Index: runtime/vm/compiler.cc |
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc |
index 3eb78742ff11ec2ccb6b1eaec6b79faa104e45c6..a99d4ba3b5fe7c25fcbe7352bf2a10a47a2e2d5b 100644 |
--- a/runtime/vm/compiler.cc |
+++ b/runtime/vm/compiler.cc |
@@ -115,7 +115,7 @@ DECLARE_FLAG(bool, trace_irregexp); |
bool UseKernelFrontEndFor(ParsedFunction* parsed_function) { |
const Function& function = parsed_function->function(); |
- return (function.kernel_offset() > 0) || |
+ return (function.kernel_function() != NULL) || |
(function.kind() == RawFunction::kNoSuchMethodDispatcher) || |
(function.kind() == RawFunction::kInvokeFieldDispatcher); |
} |
@@ -135,11 +135,11 @@ FlowGraph* DartCompilationPipeline::BuildFlowGraph( |
const ZoneGrowableArray<const ICData*>& ic_data_array, |
intptr_t osr_id) { |
if (UseKernelFrontEndFor(parsed_function)) { |
- kernel::FlowGraphBuilder builder( |
- parsed_function->function().kernel_offset(), parsed_function, |
- ic_data_array, |
- /* not building var desc */ NULL, |
- /* not inlining */ NULL, osr_id); |
+ kernel::TreeNode* node = static_cast<kernel::TreeNode*>( |
+ parsed_function->function().kernel_function()); |
+ kernel::FlowGraphBuilder builder(node, parsed_function, ic_data_array, |
+ /* not building var desc */ NULL, |
+ /* not inlining */ NULL, osr_id); |
FlowGraph* graph = builder.BuildGraph(); |
ASSERT(graph != NULL); |
return graph; |
@@ -1597,7 +1597,7 @@ void Compiler::ComputeLocalVarDescriptors(const Code& code) { |
ZoneGrowableArray<intptr_t>* context_level_array = |
new ZoneGrowableArray<intptr_t>(); |
- if (function.kernel_offset() <= 0) { |
+ if (!UseKernelFrontEndFor(parsed_function)) { |
Parser::ParseFunction(parsed_function); |
parsed_function->AllocateVariables(); |
FlowGraphBuilder builder( |
@@ -1606,9 +1606,10 @@ void Compiler::ComputeLocalVarDescriptors(const Code& code) { |
builder.BuildGraph(); |
} else { |
parsed_function->EnsureKernelScopes(); |
+ kernel::TreeNode* node = static_cast<kernel::TreeNode*>( |
+ parsed_function->function().kernel_function()); |
kernel::FlowGraphBuilder builder( |
- parsed_function->function().kernel_offset(), parsed_function, |
- *ic_data_array, context_level_array, |
+ node, parsed_function, *ic_data_array, context_level_array, |
/* not inlining */ NULL, Compiler::kNoOSRDeoptId); |
builder.BuildGraph(); |
} |
@@ -1731,7 +1732,7 @@ RawObject* Compiler::EvaluateStaticInitializer(const Field& field) { |
// Create a one-time-use function to evaluate the initializer and invoke |
// it immediately. |
- if (field.kernel_offset() > 0) { |
+ if (field.kernel_field() != NULL) { |
parsed_function = kernel::ParseStaticFieldInitializer(zone, field); |
} else { |
parsed_function = Parser::ParseStaticFieldInitializer(field); |