| Index: src/x64/codegen-x64.cc
|
| diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc
|
| index 9d171940cf72dd1efe1e505fc6c5262857f98695..a6f856ee77c91183d6b6baffb7b527f1327ac9d6 100644
|
| --- a/src/x64/codegen-x64.cc
|
| +++ b/src/x64/codegen-x64.cc
|
| @@ -5969,7 +5969,7 @@ void DeferredInlineBinaryOperation::Generate() {
|
| || (op_ ==Token::SUB)
|
| || (op_ == Token::MUL)
|
| || (op_ == Token::DIV)) {
|
| - Label call_runtime, after_alloc_failure;
|
| + Label call_runtime;
|
| Label left_smi, right_smi, load_right, do_op;
|
| __ JumpIfSmi(left_, &left_smi);
|
| __ CompareRoot(FieldOperand(left_, HeapObject::kMapOffset),
|
| @@ -5987,9 +5987,7 @@ void DeferredInlineBinaryOperation::Generate() {
|
| __ Integer32ToSmi(left_, left_);
|
| if (mode_ == OVERWRITE_LEFT) {
|
| Label alloc_failure;
|
| - __ push(left_);
|
| - __ AllocateHeapNumber(dst_, left_, &after_alloc_failure);
|
| - __ pop(left_);
|
| + __ AllocateHeapNumber(dst_, no_reg, &call_runtime);
|
| }
|
|
|
| __ bind(&load_right);
|
| @@ -6002,9 +6000,7 @@ void DeferredInlineBinaryOperation::Generate() {
|
| __ movq(dst_, right_);
|
| } else if (mode_ == NO_OVERWRITE) {
|
| Label alloc_failure;
|
| - __ push(left_);
|
| - __ AllocateHeapNumber(dst_, left_, &after_alloc_failure);
|
| - __ pop(left_);
|
| + __ AllocateHeapNumber(dst_, no_reg, &call_runtime);
|
| }
|
| __ jmp(&do_op);
|
|
|
| @@ -6014,9 +6010,7 @@ void DeferredInlineBinaryOperation::Generate() {
|
| __ Integer32ToSmi(right_, right_);
|
| if (mode_ == OVERWRITE_RIGHT || mode_ == NO_OVERWRITE) {
|
| Label alloc_failure;
|
| - __ push(left_);
|
| - __ AllocateHeapNumber(dst_, left_, &after_alloc_failure);
|
| - __ pop(left_);
|
| + __ AllocateHeapNumber(dst_, no_reg, &call_runtime);
|
| }
|
|
|
| __ bind(&do_op);
|
| @@ -6030,8 +6024,6 @@ void DeferredInlineBinaryOperation::Generate() {
|
| __ movsd(FieldOperand(dst_, HeapNumber::kValueOffset), xmm0);
|
| __ jmp(&done);
|
|
|
| - __ bind(&after_alloc_failure);
|
| - __ pop(left_);
|
| __ bind(&call_runtime);
|
| }
|
| GenericBinaryOpStub stub(op_, mode_, NO_SMI_CODE_IN_STUB);
|
|
|