Index: runtime/vm/intermediate_language_x64.cc |
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc |
index e571cb2a1603c292e28291d3227103735d463113..2baacc350c253a119d09224cea3cee929f435acd 100644 |
--- a/runtime/vm/intermediate_language_x64.cc |
+++ b/runtime/vm/intermediate_language_x64.cc |
@@ -1778,15 +1778,13 @@ void DoubleBinaryOpComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
PcDescriptors::kOther); |
// Newly allocated object is now in the result register (RAX). |
ASSERT(result == RAX); |
- __ popq(right); |
- __ popq(left); |
+ __ movq(right, Address(ESP, 0)); |
+ __ movq(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. |
__ movq(temp, left); |
@@ -1806,6 +1804,8 @@ void DoubleBinaryOpComp::EmitNativeCode(FlowGraphCompiler* compiler) { |
} |
__ movsd(FieldAddress(result, Double::value_offset()), XMM0); |
+ |
+ __ Drop(2); |
} |