| 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);
|
| }
|
|
|
|
|
|
|