Index: runtime/vm/flow_graph_inliner.cc |
=================================================================== |
--- runtime/vm/flow_graph_inliner.cc (revision 20996) |
+++ runtime/vm/flow_graph_inliner.cc (working copy) |
@@ -292,7 +292,7 @@ |
class CallSiteInliner : public ValueObject { |
public: |
- explicit CallSiteInliner(FlowGraph* flow_graph) |
+ CallSiteInliner(FlowGraph* flow_graph, GrowableArray<Field*>* guarded_fields) |
: caller_graph_(flow_graph), |
inlined_(false), |
initial_size_(flow_graph->InstructionCount()), |
@@ -300,7 +300,8 @@ |
inlining_depth_(1), |
collected_call_sites_(NULL), |
inlining_call_sites_(NULL), |
- function_cache_() { } |
+ function_cache_(), |
+ guarded_fields_(guarded_fields) { } |
// Inlining heuristics based on Cooper et al. 2008. |
bool ShouldWeInline(intptr_t instr_count, |
@@ -501,7 +502,7 @@ |
&CompilerStats::graphinliner_opt_timer, |
isolate); |
// TODO(zerny): Do more optimization passes on the callee graph. |
- FlowGraphOptimizer optimizer(callee_graph); |
+ FlowGraphOptimizer optimizer(callee_graph, guarded_fields_); |
optimizer.ApplyICData(); |
DEBUG_ASSERT(callee_graph->VerifyUseLists()); |
} |
@@ -834,6 +835,7 @@ |
CallSites* collected_call_sites_; |
CallSites* inlining_call_sites_; |
GrowableArray<ParsedFunction*> function_cache_; |
+ GrowableArray<Field*>* guarded_fields_; |
DISALLOW_COPY_AND_ASSIGN(CallSiteInliner); |
}; |
@@ -874,7 +876,7 @@ |
printer.PrintBlocks(); |
} |
- CallSiteInliner inliner(flow_graph_); |
+ CallSiteInliner inliner(flow_graph_, guarded_fields_); |
inliner.InlineCalls(); |
if (inliner.inlined()) { |