Index: runtime/vm/flow_graph_inliner.cc |
=================================================================== |
--- runtime/vm/flow_graph_inliner.cc (revision 29797) |
+++ runtime/vm/flow_graph_inliner.cc (working copy) |
@@ -171,11 +171,23 @@ |
++instruction_count_; |
Instruction* current = it.Current(); |
if (current->IsStaticCall() || |
- current->IsClosureCall() || |
- (current->IsPolymorphicInstanceCall() && |
- !current->AsPolymorphicInstanceCall()->HasRecognizedTarget())) { |
+ current->IsClosureCall()) { |
++call_site_count_; |
+ continue; |
} |
+ if (current->IsPolymorphicInstanceCall()) { |
+ PolymorphicInstanceCallInstr* call = |
+ current->AsPolymorphicInstanceCall(); |
+ // These checks make sure that the number of call-sites counted does |
+ // not change relative to the time when the current set of inlining |
+ // parameters was fixed. |
+ // TODO(fschneider): Determine new heuristic parameters that avoid |
+ // these checks entirely. |
+ if (!call->HasRecognizedTarget() && |
+ (call->instance_call()->token_kind() != Token::kEQ)) { |
+ ++call_site_count_; |
+ } |
+ } |
} |
} |
} |