| Index: src/x64/debug-x64.cc
|
| diff --git a/src/x64/debug-x64.cc b/src/x64/debug-x64.cc
|
| index a337b0d052f7252ea1baa0e3b1d0bfe608fd87a7..8de11f256a3fdd04d3da56ceb40625c5dcbf1e39 100644
|
| --- a/src/x64/debug-x64.cc
|
| +++ b/src/x64/debug-x64.cc
|
| @@ -127,11 +127,19 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm,
|
| // Store the 64-bit value as two smis.
|
| if ((non_object_regs & (1 << r)) != 0) {
|
| __ movq(kScratchRegister, reg);
|
| +#if !V8_USE_31_BITS_SMI_VALUE
|
| __ Integer32ToSmi(reg, reg);
|
| __ push(reg);
|
| __ sar(kScratchRegister, Immediate(32));
|
| __ Integer32ToSmi(kScratchRegister, kScratchRegister);
|
| __ push(kScratchRegister);
|
| +#else
|
| + __ shr(reg, Immediate(63));
|
| + __ shll(reg, Immediate(1));
|
| + __ push(reg);
|
| + __ shl(kScratchRegister, Immediate(1));
|
| + __ push(kScratchRegister);
|
| +#endif
|
| }
|
| }
|
|
|
| @@ -157,11 +165,18 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm,
|
| // Reconstruct the 64-bit value from two smis.
|
| if ((non_object_regs & (1 << r)) != 0) {
|
| __ pop(kScratchRegister);
|
| +#if !V8_USE_31_BITS_SMI_VALUE
|
| __ SmiToInteger32(kScratchRegister, kScratchRegister);
|
| __ shl(kScratchRegister, Immediate(32));
|
| __ pop(reg);
|
| __ SmiToInteger32(reg, reg);
|
| __ or_(reg, kScratchRegister);
|
| +#else
|
| + __ shr(kScratchRegister, Immediate(1));
|
| + __ pop(reg);
|
| + __ shl(reg, Immediate(62));
|
| + __ or_(reg, kScratchRegister);
|
| +#endif
|
| }
|
| }
|
|
|
|
|