Chromium Code Reviews| Index: runtime/vm/flow_graph_inliner.cc |
| =================================================================== |
| --- runtime/vm/flow_graph_inliner.cc (revision 29353) |
| +++ 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() && |
|
Florian Schneider
2013/10/28 13:34:19
This is needed to avoid performance regressions wi
|
| + (call->instance_call()->token_kind() != Token::kEQ)) { |
| + ++call_site_count_; |
| + } |
| + } |
| } |
| } |
| } |