| Index: src/x64/lithium-codegen-x64.cc
|
| diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
|
| index 83a8cb249841051b0a1ac62d50d59be5085823f6..0b6ccd1b1d69dde7413d0ac42b03fe6088519ac9 100644
|
| --- a/src/x64/lithium-codegen-x64.cc
|
| +++ b/src/x64/lithium-codegen-x64.cc
|
| @@ -4528,16 +4528,17 @@ void LCodeGen::DoDeferredNumberTagU(LNumberTagU* instr) {
|
| Label slow;
|
| Register reg = ToRegister(instr->value());
|
| Register tmp = reg.is(rax) ? rcx : rax;
|
| + XMMRegister temp_xmm = ToDoubleRegister(instr->temp());
|
|
|
| // Preserve the value of all registers.
|
| PushSafepointRegistersScope scope(this);
|
|
|
| Label done;
|
| - // Load value into xmm1 which will be preserved across potential call to
|
| + // Load value into temp_xmm which will be preserved across potential call to
|
| // runtime (MacroAssembler::EnterExitFrameEpilogue preserves only allocatable
|
| // XMM registers on x64).
|
| XMMRegister xmm_scratch = double_scratch0();
|
| - __ LoadUint32(xmm1, reg, xmm_scratch);
|
| + __ LoadUint32(temp_xmm, reg, xmm_scratch);
|
|
|
| if (FLAG_inline_new) {
|
| __ AllocateHeapNumber(reg, tmp, &slow);
|
| @@ -4555,10 +4556,10 @@ void LCodeGen::DoDeferredNumberTagU(LNumberTagU* instr) {
|
| CallRuntimeFromDeferred(Runtime::kAllocateHeapNumber, 0, instr);
|
| if (!reg.is(rax)) __ movq(reg, rax);
|
|
|
| - // Done. Put the value in xmm1 into the value of the allocated heap
|
| + // Done. Put the value in temp_xmm into the value of the allocated heap
|
| // number.
|
| __ bind(&done);
|
| - __ movsd(FieldOperand(reg, HeapNumber::kValueOffset), xmm1);
|
| + __ movsd(FieldOperand(reg, HeapNumber::kValueOffset), temp_xmm);
|
| __ StoreToSafepointRegisterSlot(reg, reg);
|
| }
|
|
|
|
|