Index: runtime/vm/intermediate_language_ia32.cc |
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc |
index 0ad84753773bb24ea52e8655b33a0893a560f72b..502e430be62218d56a48422279b2a65ceda1ba67 100644 |
--- a/runtime/vm/intermediate_language_ia32.cc |
+++ b/runtime/vm/intermediate_language_ia32.cc |
@@ -1768,15 +1768,13 @@ void DoubleBinaryOpComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
PcDescriptors::kOther); |
// Newly allocated object is now in the result register (RAX). |
ASSERT(result == EAX); |
- __ popl(right); |
- __ popl(left); |
+ __ movl(right, Address(ESP, 0)); |
+ __ movl(left, Address(ESP, kWordSize)); |
Label* deopt = compiler->AddDeoptStub(instance_call()->deopt_id(), |
instance_call()->token_pos(), |
instance_call()->try_index(), |
- kDeoptDoubleBinaryOp, |
- left, |
- right); |
+ kDeoptDoubleBinaryOp); |
// Binary operation of two Smi's produces a Smi not a double. |
__ movl(temp, left); |
@@ -1796,6 +1794,8 @@ void DoubleBinaryOpComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
} |
__ movsd(FieldAddress(result, Double::value_offset()), XMM0); |
+ |
+ __ Drop(2); |
} |