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

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

Issue 18014003: Add X32 port into V8 (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 7 years, 6 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
===================================================================
--- src/x64/debug-x64.cc (revision 15486)
+++ src/x64/debug-x64.cc (working copy)
@@ -95,6 +95,7 @@
#define __ ACCESS_MASM(masm)
+#define __q __
static void Generate_DebugBreakCallHelper(MacroAssembler* masm,
@@ -126,12 +127,21 @@
}
// Store the 64-bit value as two smis.
if ((non_object_regs & (1 << r)) != 0) {
+#ifndef V8_TARGET_ARCH_X32
__ movq(kScratchRegister, reg);
__ Integer32ToSmi(reg, reg);
__ push(reg);
__ sar(kScratchRegister, Immediate(32));
__ Integer32ToSmi(kScratchRegister, kScratchRegister);
__ push(kScratchRegister);
+#else
+ if (FLAG_debug_code) {
+ __ testl(reg, Immediate(0xc0000000));
+ __ Assert(zero, "Unable to encode value as smi");
+ }
+ __ Integer32ToSmi(reg, reg);
+ __ Push(reg);
+#endif
}
}
@@ -156,12 +166,17 @@
}
// Reconstruct the 64-bit value from two smis.
if ((non_object_regs & (1 << r)) != 0) {
+#ifndef V8_TARGET_ARCH_X32
__ pop(kScratchRegister);
__ SmiToInteger32(kScratchRegister, kScratchRegister);
__ shl(kScratchRegister, Immediate(32));
__ pop(reg);
__ SmiToInteger32(reg, reg);
__ or_(reg, kScratchRegister);
+#else
+ __ Pop(reg);
+ __ SmiToInteger32(reg, reg);
+#endif
}
}
@@ -176,7 +191,7 @@
// If this call did not replace a call but patched other code then there will
// be an unwanted return address left on the stack. Here we get rid of that.
if (convert_call_to_jmp) {
- __ addq(rsp, Immediate(kPointerSize));
+ __q addq(rsp, Immediate(kPointerSize));
}
// Now that the break point has been handled, resume normal execution by
@@ -185,7 +200,11 @@
ExternalReference after_break_target =
ExternalReference(Debug_Address::AfterBreakTarget(), masm->isolate());
__ movq(kScratchRegister, after_break_target);
+#ifndef V8_TARGET_ARCH_X32
__ jmp(Operand(kScratchRegister, 0));
+#else
+ __ Jump(Operand(kScratchRegister, 0));
+#endif
}
@@ -354,6 +373,7 @@
const bool Debug::kFrameDropperSupported = true;
+#undef __q
#undef __
#endif // ENABLE_DEBUGGER_SUPPORT

Powered by Google App Engine
This is Rietveld 408576698