Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(746)

Unified Diff: src/x64/debug-x64.cc

Issue 21014003: Optionally use 31-bits SMI value for 64-bit system (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
}
}

Powered by Google App Engine
This is Rietveld 408576698