Index: runtime/vm/intermediate_language_ia32.cc |
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc |
index 9f44781c01837d803f03e74b3ef1c59dad26a9c8..70af4d71818d446a2a7d717f9aee943d02ca8f62 100644 |
--- a/runtime/vm/intermediate_language_ia32.cc |
+++ b/runtime/vm/intermediate_language_ia32.cc |
@@ -1703,14 +1703,12 @@ 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()->try_index(), |
- kDeoptDoubleBinaryOp, |
- left, |
- right); |
+ kDeoptDoubleBinaryOp); |
// Binary operation of two Smi's produces a Smi not a double. |
__ movl(temp, left); |
@@ -1730,6 +1728,8 @@ void DoubleBinaryOpComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
} |
__ movsd(FieldAddress(result, Double::value_offset()), XMM0); |
+ |
+ __ Drop(2); |
} |