Index: runtime/vm/flow_graph_compiler.cc |
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc |
index 869627c6f1159050368e170a5723096b0d360f30..f6e45556487d4e15a44496cebc6c83ba52b4071e 100644 |
--- a/runtime/vm/flow_graph_compiler.cc |
+++ b/runtime/vm/flow_graph_compiler.cc |
@@ -533,24 +533,25 @@ void FlowGraphCompiler::GenerateInstanceCall( |
argument_count, deopt_id, token_pos, locs); |
return; |
} |
+ |
if (is_optimizing()) { |
- // Megamorphic call requires one argument ICData. |
- ASSERT(ic_data.num_args_tested() == 1); |
- label_address = StubCode::MegamorphicCallEntryPoint(); |
- } else { |
- switch (ic_data.num_args_tested()) { |
- case 1: |
- label_address = StubCode::OneArgCheckInlineCacheEntryPoint(); |
- break; |
- case 2: |
- label_address = StubCode::TwoArgsCheckInlineCacheEntryPoint(); |
- break; |
- case 3: |
- label_address = StubCode::ThreeArgsCheckInlineCacheEntryPoint(); |
- break; |
- default: |
- UNIMPLEMENTED(); |
- } |
+ EmitMegamorphicInstanceCall(ic_data, arguments_descriptor, argument_count, |
+ deopt_id, token_pos, locs); |
+ return; |
+ } |
+ |
+ switch (ic_data.num_args_tested()) { |
+ case 1: |
+ label_address = StubCode::OneArgCheckInlineCacheEntryPoint(); |
+ break; |
+ case 2: |
+ label_address = StubCode::TwoArgsCheckInlineCacheEntryPoint(); |
+ break; |
+ case 3: |
+ label_address = StubCode::ThreeArgsCheckInlineCacheEntryPoint(); |
+ break; |
+ default: |
+ UNIMPLEMENTED(); |
} |
ExternalLabel target_label("InlineCache", label_address); |
EmitInstanceCall(&target_label, ic_data, arguments_descriptor, argument_count, |