| Index: runtime/vm/intermediate_language.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language.cc (revision 13703)
|
| +++ runtime/vm/intermediate_language.cc (working copy)
|
| @@ -1775,18 +1775,32 @@
|
|
|
|
|
| void InstanceCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - if (!compiler->is_optimizing()) {
|
| + if (compiler->is_optimizing()) {
|
| + if (HasICData() && (ic_data()->NumberOfChecks() > 0)) {
|
| + compiler->GenerateInstanceCall(deopt_id(),
|
| + token_pos(),
|
| + function_name(),
|
| + ArgumentCount(),
|
| + argument_names(),
|
| + checked_argument_count(),
|
| + locs());
|
| + } else {
|
| + Label* deopt =
|
| + compiler->AddDeoptStub(deopt_id(), kDeoptInstanceCallNoICData);
|
| + __ jmp(deopt);
|
| + }
|
| + } else {
|
| compiler->AddCurrentDescriptor(PcDescriptors::kDeoptBefore,
|
| deopt_id(),
|
| token_pos());
|
| + compiler->GenerateInstanceCall(deopt_id(),
|
| + token_pos(),
|
| + function_name(),
|
| + ArgumentCount(),
|
| + argument_names(),
|
| + checked_argument_count(),
|
| + locs());
|
| }
|
| - compiler->GenerateInstanceCall(deopt_id(),
|
| - token_pos(),
|
| - function_name(),
|
| - ArgumentCount(),
|
| - argument_names(),
|
| - checked_argument_count(),
|
| - locs());
|
| }
|
|
|
|
|
|
|