| Index: runtime/vm/intermediate_language_x64.cc
|
| diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
|
| index b4846c5db6cf755a15c431b0a3c5cf5217ca1e8e..108e808fc8b629769add7486f919f28a9f84cf82 100644
|
| --- a/runtime/vm/intermediate_language_x64.cc
|
| +++ b/runtime/vm/intermediate_language_x64.cc
|
| @@ -1712,14 +1712,12 @@ 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(RSP, 0));
|
| + __ movq(left, Address(RSP, 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.
|
| __ movq(temp, left);
|
| @@ -1739,6 +1737,8 @@ void DoubleBinaryOpComp::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
|
|
| __ movsd(FieldAddress(result, Double::value_offset()), XMM0);
|
| +
|
| + __ Drop(2);
|
| }
|
|
|
|
|
|
|