Index: runtime/vm/flow_graph_builder.cc |
=================================================================== |
--- runtime/vm/flow_graph_builder.cc (revision 43213) |
+++ runtime/vm/flow_graph_builder.cc (working copy) |
@@ -237,18 +237,18 @@ |
FlowGraphBuilder::FlowGraphBuilder( |
- ParsedFunction* parsed_function, |
+ const ParsedFunction& parsed_function, |
const ZoneGrowableArray<const ICData*>& ic_data_array, |
InlineExitCollector* exit_collector, |
intptr_t osr_id) : |
parsed_function_(parsed_function), |
ic_data_array_(ic_data_array), |
- num_copied_params_(parsed_function->num_copied_params()), |
+ num_copied_params_(parsed_function.num_copied_params()), |
// All parameters are copied if any parameter is. |
num_non_copied_params_((num_copied_params_ == 0) |
- ? parsed_function->function().num_fixed_parameters() |
+ ? parsed_function.function().num_fixed_parameters() |
: 0), |
- num_stack_locals_(parsed_function->num_stack_locals()), |
+ num_stack_locals_(parsed_function.num_stack_locals()), |
exit_collector_(exit_collector), |
last_used_block_id_(0), // 0 is used for the graph entry. |
try_index_(CatchClauseNode::kInvalidTryIndex), |
@@ -748,13 +748,13 @@ |
Definition* EffectGraphVisitor::BuildStoreExprTemp(Value* value) { |
- return BuildStoreTemp(*owner()->parsed_function()->expression_temp_var(), |
+ return BuildStoreTemp(*owner()->parsed_function().expression_temp_var(), |
value); |
} |
Definition* EffectGraphVisitor::BuildLoadExprTemp() { |
- return BuildLoadLocal(*owner()->parsed_function()->expression_temp_var()); |
+ return BuildLoadLocal(*owner()->parsed_function().expression_temp_var()); |
} |
@@ -825,13 +825,13 @@ |
Definition* EffectGraphVisitor::BuildStoreContext(Value* value) { |
return new(I) StoreLocalInstr( |
- *owner()->parsed_function()->current_context_var(), value); |
+ *owner()->parsed_function().current_context_var(), value); |
} |
Definition* EffectGraphVisitor::BuildCurrentContext() { |
return new(I) LoadLocalInstr( |
- *owner()->parsed_function()->current_context_var()); |
+ *owner()->parsed_function().current_context_var()); |
} |
@@ -1019,7 +1019,7 @@ |
Value* return_value = for_value.value(); |
if (node->inlined_finally_list_length() > 0) { |
- LocalVariable* temp = owner()->parsed_function()->finally_return_temp_var(); |
+ LocalVariable* temp = owner()->parsed_function().finally_return_temp_var(); |
ASSERT(temp != NULL); |
Do(BuildStoreLocal(*temp, return_value)); |
for (intptr_t i = 0; i < node->inlined_finally_list_length(); i++) { |
@@ -1187,7 +1187,7 @@ |
const bool eliminated = value->Type()->IsAssignableTo(dst_type); |
if (FLAG_trace_type_check_elimination) { |
- FlowGraphPrinter::PrintTypeCheck(*owner()->parsed_function(), |
+ FlowGraphPrinter::PrintTypeCheck(owner()->parsed_function(), |
token_pos, |
value, |
dst_type, |
@@ -2448,8 +2448,7 @@ |
ASSERT(!function.HasCode()); |
ASSERT(function.context_scope() == ContextScope::null()); |
function.set_context_scope(context_scope); |
- const Class& cls = Class::Handle( |
- I, owner()->function().Owner()); |
+ const Class& cls = Class::Handle(I, owner()->function().Owner()); |
// The closure is now properly setup, add it to the lookup table. |
// It is possible that the compiler creates more than one function |
// object for the same closure, e.g. when inlining nodes from |
@@ -2815,7 +2814,7 @@ |
return NULL; |
} |
- LocalVariable* instantiator = owner()->parsed_function()->instantiator(); |
+ LocalVariable* instantiator = owner()->parsed_function().instantiator(); |
ASSERT(instantiator != NULL); |
Value* result = Bind(BuildLoadLocal(*instantiator)); |
return result; |
@@ -2851,7 +2850,7 @@ |
// No instantiator for factories. |
ASSERT(instantiator == NULL); |
LocalVariable* instantiator_var = |
- owner()->parsed_function()->instantiator(); |
+ owner()->parsed_function().instantiator(); |
ASSERT(instantiator_var != NULL); |
return Bind(BuildLoadLocal(*instantiator_var)); |
} |
@@ -3738,7 +3737,7 @@ |
const intptr_t num_context_variables = |
(scope != NULL) ? scope->num_context_variables() : 0; |
const bool is_top_level_sequence = |
- node == owner()->parsed_function()->node_sequence(); |
+ node == owner()->parsed_function().node_sequence(); |
// The outermost function sequence cannot contain a label. |
ASSERT((node->label() == NULL) || !is_top_level_sequence); |
NestedBlock nested_block(owner(), node); |
@@ -4094,7 +4093,7 @@ |
intptr_t args_pos = method_arguments->token_pos(); |
LocalVariable* temp = NULL; |
if (save_last_arg) { |
- temp = owner()->parsed_function()->EnsureExpressionTemp(); |
+ temp = owner()->parsed_function().expression_temp_var(); |
} |
ArgumentListNode* args = |
Parser::BuildNoSuchMethodArguments(args_pos, |
@@ -4268,10 +4267,10 @@ |
FlowGraph* FlowGraphBuilder::BuildGraph() { |
if (FLAG_print_ast) { |
// Print the function ast before IL generation. |
- AstPrinter::PrintFunctionNodes(*parsed_function()); |
+ AstPrinter::PrintFunctionNodes(parsed_function()); |
} |
if (FLAG_print_scopes) { |
- AstPrinter::PrintFunctionScope(*parsed_function()); |
+ AstPrinter::PrintFunctionScope(parsed_function()); |
} |
TargetEntryInstr* normal_entry = |
new(I) TargetEntryInstr(AllocateBlockId(), |
@@ -4279,7 +4278,7 @@ |
graph_entry_ = |
new(I) GraphEntryInstr(parsed_function(), normal_entry, osr_id_); |
EffectGraphVisitor for_effect(this); |
- parsed_function()->node_sequence()->Visit(&for_effect); |
+ parsed_function().node_sequence()->Visit(&for_effect); |
AppendFragment(normal_entry, for_effect); |
// Check that the graph is properly terminated. |
ASSERT(!for_effect.is_open()); |
@@ -4299,7 +4298,7 @@ |
void FlowGraphBuilder::PruneUnreachable() { |
ASSERT(osr_id_ != Isolate::kNoDeoptId); |
- Zone* zone = parsed_function()->zone(); |
+ Zone* zone = parsed_function().zone(); |
BitVector* block_marks = new(zone) BitVector(zone, last_used_block_id_ + 1); |
bool found = graph_entry_->PruneUnreachable(this, graph_entry_, NULL, osr_id_, |
block_marks); |
@@ -4308,7 +4307,7 @@ |
void FlowGraphBuilder::Bailout(const char* reason) const { |
- const Function& function = parsed_function_->function(); |
+ const Function& function = parsed_function_.function(); |
Report::MessageF(Report::kBailout, |
Script::Handle(function.script()), |
function.token_pos(), |