Index: src/ia32/debug-ia32.cc |
diff --git a/src/ia32/debug-ia32.cc b/src/ia32/debug-ia32.cc |
index 5666cf4d22f88befd406b3fa67c7cd02a86bbff2..651c32b4444b16363eca559d59752e70d63507e0 100644 |
--- a/src/ia32/debug-ia32.cc |
+++ b/src/ia32/debug-ia32.cc |
@@ -71,9 +71,7 @@ void BreakLocation::SetDebugBreakAtSlot() { |
#define __ ACCESS_MASM(masm) |
static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
- RegList object_regs, |
- RegList non_object_regs, |
- bool convert_call_to_jmp) { |
+ RegList object_regs) { |
// Enter an internal frame. |
{ |
FrameScope scope(masm, StackFrame::INTERNAL); |
@@ -88,22 +86,12 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
// make sure that these are correctly updated during GC. Non object values |
// are stored as a smi causing it to be untouched by GC. |
DCHECK((object_regs & ~kJSCallerSaved) == 0); |
- DCHECK((non_object_regs & ~kJSCallerSaved) == 0); |
- DCHECK((object_regs & non_object_regs) == 0); |
for (int i = 0; i < kNumJSCallerSaved; i++) { |
int r = JSCallerSavedCode(i); |
Register reg = { r }; |
if ((object_regs & (1 << r)) != 0) { |
__ push(reg); |
} |
- if ((non_object_regs & (1 << r)) != 0) { |
- if (FLAG_debug_code) { |
- __ test(reg, Immediate(0xc0000000)); |
- __ Assert(zero, kUnableToEncodeValueAsSmi); |
- } |
- __ SmiTag(reg); |
- __ push(reg); |
- } |
} |
#ifdef DEBUG |
@@ -132,11 +120,6 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
__ pop(reg); |
taken = true; |
} |
- if ((non_object_regs & (1 << r)) != 0) { |
- __ pop(reg); |
- __ SmiUntag(reg); |
- taken = true; |
- } |
if (!taken) { |
unused_reg = reg; |
} |
@@ -153,11 +136,9 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
// Get rid of the internal frame. |
} |
- // 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) { |
- __ add(esp, Immediate(kPointerSize)); |
- } |
+ // This call did not replace a call , so there will be an unwanted |
+ // return address left on the stack. Here we get rid of that. |
+ __ add(esp, Immediate(kPointerSize)); |
// Now that the break point has been handled, resume normal execution by |
// jumping to the target address intended by the caller and that was |
@@ -168,62 +149,12 @@ static void Generate_DebugBreakCallHelper(MacroAssembler* masm, |
} |
-void DebugCodegen::GenerateCallICStubDebugBreak(MacroAssembler* masm) { |
- // Register state for CallICStub |
- // ----------- S t a t e ------------- |
- // -- edx : type feedback slot (smi) |
- // -- edi : function |
- // ----------------------------------- |
- Generate_DebugBreakCallHelper(masm, edx.bit() | edi.bit(), |
- 0, false); |
-} |
- |
- |
void DebugCodegen::GenerateReturnDebugBreak(MacroAssembler* masm) { |
// Register state just before return from JS function (from codegen-ia32.cc). |
// ----------- S t a t e ------------- |
// -- eax: return value |
// ----------------------------------- |
- Generate_DebugBreakCallHelper(masm, eax.bit(), 0, true); |
-} |
- |
- |
-void DebugCodegen::GenerateCallFunctionStubDebugBreak(MacroAssembler* masm) { |
- // Register state for CallFunctionStub (from code-stubs-ia32.cc). |
- // ----------- S t a t e ------------- |
- // -- edi: function |
- // ----------------------------------- |
- Generate_DebugBreakCallHelper(masm, edi.bit(), 0, false); |
-} |
- |
- |
-void DebugCodegen::GenerateCallConstructStubDebugBreak(MacroAssembler* masm) { |
- // Register state for CallConstructStub (from code-stubs-ia32.cc). |
- // eax is the actual number of arguments not encoded as a smi see comment |
- // above IC call. |
- // ----------- S t a t e ------------- |
- // -- eax: number of arguments (not smi) |
- // -- edi: constructor function |
- // ----------------------------------- |
- // The number of arguments in eax is not smi encoded. |
- Generate_DebugBreakCallHelper(masm, edi.bit(), eax.bit(), false); |
-} |
- |
- |
-void DebugCodegen::GenerateCallConstructStubRecordDebugBreak( |
- MacroAssembler* masm) { |
- // Register state for CallConstructStub (from code-stubs-ia32.cc). |
- // eax is the actual number of arguments not encoded as a smi see comment |
- // above IC call. |
- // ----------- S t a t e ------------- |
- // -- eax: number of arguments (not smi) |
- // -- ebx: feedback array |
- // -- edx: feedback slot (smi) |
- // -- edi: constructor function |
- // ----------------------------------- |
- // The number of arguments in eax is not smi encoded. |
- Generate_DebugBreakCallHelper(masm, ebx.bit() | edx.bit() | edi.bit(), |
- eax.bit(), false); |
+ Generate_DebugBreakCallHelper(masm, eax.bit()); |
} |
@@ -231,7 +162,6 @@ void DebugCodegen::GenerateSlot(MacroAssembler* masm) { |
// Generate enough nop's to make space for a call instruction. |
Label check_codesize; |
__ bind(&check_codesize); |
- __ RecordDebugBreakSlot(); |
__ Nop(Assembler::kDebugBreakSlotLength); |
DCHECK_EQ(Assembler::kDebugBreakSlotLength, |
masm->SizeOfCodeGeneratedSince(&check_codesize)); |
@@ -239,7 +169,7 @@ void DebugCodegen::GenerateSlot(MacroAssembler* masm) { |
void DebugCodegen::GenerateSlotDebugBreak(MacroAssembler* masm) { |
- Generate_DebugBreakCallHelper(masm, 0, 0, true); |
+ Generate_DebugBreakCallHelper(masm, 0); |
} |