Index: runtime/vm/intermediate_language_ia32.cc |
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc |
index 54bcb4ae148ab6b673b058d972eb5aa402ea24b3..b92598fb2d84c661d13c40c744f8cb2d69e00c6b 100644 |
--- a/runtime/vm/intermediate_language_ia32.cc |
+++ b/runtime/vm/intermediate_language_ia32.cc |
@@ -2124,9 +2124,15 @@ void CreateArrayInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
const Code& stub = Code::ZoneHandle(compiler->zone(), |
StubCode::AllocateArray_entry()->code()); |
compiler->AddStubCallTarget(stub); |
- compiler->GenerateCallWithDeopt(token_pos(), deopt_id(), |
- *StubCode::AllocateArray_entry(), |
- RawPcDescriptors::kOther, locs()); |
+ if (deopt_id() == Thread::kNoDeoptId) { |
+ ASSERT(compiler->is_optimizing()); |
+ compiler->GenerateCall(token_pos(), *StubCode::AllocateArray_entry(), |
+ RawPcDescriptors::kOther, locs()); |
+ } else { |
+ compiler->GenerateCallWithDeopt(token_pos(), deopt_id(), |
+ *StubCode::AllocateArray_entry(), |
+ RawPcDescriptors::kOther, locs()); |
+ } |
__ Bind(&done); |
ASSERT(locs()->out(0).reg() == kResultReg); |
} |