| Index: runtime/vm/intermediate_language_mips.cc
 | 
| diff --git a/runtime/vm/intermediate_language_mips.cc b/runtime/vm/intermediate_language_mips.cc
 | 
| index 0905a5d049ed88872e40ade5bad098898e935e33..e888e8454a8eefbd3ed6f6e8e3ca2084ed6ec7bb 100644
 | 
| --- a/runtime/vm/intermediate_language_mips.cc
 | 
| +++ b/runtime/vm/intermediate_language_mips.cc
 | 
| @@ -988,32 +988,42 @@ void NativeCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
 | 
|    // Compute the effective address. When running under the simulator,
 | 
|    // this is a redirection address that forces the simulator to call
 | 
|    // into the runtime system.
 | 
| -  uword entry = reinterpret_cast<uword>(native_c_function());
 | 
| +  uword entry;
 | 
|    const intptr_t argc_tag = NativeArguments::ComputeArgcTag(function());
 | 
|    const bool is_leaf_call =
 | 
|      (argc_tag & NativeArguments::AutoSetupScopeMask()) == 0;
 | 
| -  const StubEntry* stub_entry = NULL;
 | 
| -  if (is_bootstrap_native() || is_leaf_call) {
 | 
| +  const StubEntry* stub_entry;
 | 
| +  if (link_lazily()) {
 | 
|      stub_entry = StubCode::CallBootstrapCFunction_entry();
 | 
| +    entry = reinterpret_cast<uword>(&NativeEntry::LinkNativeCall);
 | 
|  #if defined(USING_SIMULATOR)
 | 
|      entry = Simulator::RedirectExternalReference(
 | 
|          entry, Simulator::kBootstrapNativeCall, function().NumParameters());
 | 
|  #endif
 | 
|    } else {
 | 
| -    // In the case of non bootstrap native methods the CallNativeCFunction
 | 
| -    // stub generates the redirection address when running under the simulator
 | 
| -    // and hence we do not change 'entry' here.
 | 
| -    stub_entry = StubCode::CallNativeCFunction_entry();
 | 
| +    entry = reinterpret_cast<uword>(native_c_function());
 | 
| +    if (is_bootstrap_native() || is_leaf_call) {
 | 
| +      stub_entry = StubCode::CallBootstrapCFunction_entry();
 | 
|  #if defined(USING_SIMULATOR)
 | 
| -    if (!function().IsNativeAutoSetupScope()) {
 | 
|        entry = Simulator::RedirectExternalReference(
 | 
|            entry, Simulator::kBootstrapNativeCall, function().NumParameters());
 | 
| -    }
 | 
|  #endif
 | 
| +    } else {
 | 
| +      // In the case of non bootstrap native methods the CallNativeCFunction
 | 
| +      // stub generates the redirection address when running under the simulator
 | 
| +      // and hence we do not change 'entry' here.
 | 
| +      stub_entry = StubCode::CallNativeCFunction_entry();
 | 
| +#if defined(USING_SIMULATOR)
 | 
| +      if (!function().IsNativeAutoSetupScope()) {
 | 
| +        entry = Simulator::RedirectExternalReference(
 | 
| +            entry, Simulator::kBootstrapNativeCall, function().NumParameters());
 | 
| +      }
 | 
| +#endif
 | 
| +    }
 | 
|    }
 | 
| +  __ LoadImmediate(A1, argc_tag);
 | 
|    ExternalLabel label(entry);
 | 
|    __ LoadExternalLabel(T5, &label, kNotPatchable);
 | 
| -  __ LoadImmediate(A1, argc_tag);
 | 
|    compiler->GenerateCall(token_pos(),
 | 
|                           *stub_entry,
 | 
|                           RawPcDescriptors::kOther,
 | 
| 
 |