Index: src/arm/macro-assembler-arm.cc |
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc |
index 45c6540eeb431b6741fb864f81e8743b2cb3af20..dc73bad93f189620ab0707a9d97bd08cfc33f58a 100644 |
--- a/src/arm/macro-assembler-arm.cc |
+++ b/src/arm/macro-assembler-arm.cc |
@@ -274,9 +274,7 @@ void MacroAssembler::LeaveFrame(StackFrame::Type type) { |
} |
-void MacroAssembler::EnterExitFrame(StackFrame::Type type) { |
- ASSERT(type == StackFrame::EXIT || type == StackFrame::EXIT_DEBUG); |
- |
+void MacroAssembler::EnterExitFrame(ExitFrame::Mode mode) { |
// Compute the argv pointer and keep it in a callee-saved register. |
// r0 is argc. |
add(r6, sp, Operand(r0, LSL, kPointerSizeLog2)); |
@@ -298,8 +296,11 @@ void MacroAssembler::EnterExitFrame(StackFrame::Type type) { |
stm(db_w, sp, fp.bit() | ip.bit() | lr.bit()); |
mov(fp, Operand(sp)); // setup new frame pointer |
- // Push debug marker. |
- mov(ip, Operand(type == StackFrame::EXIT_DEBUG ? 1 : 0)); |
+ if (mode == ExitFrame::MODE_DEBUG) { |
+ mov(ip, Operand(Smi::FromInt(0))); |
+ } else { |
+ mov(ip, Operand(CodeObject())); |
+ } |
push(ip); |
// Save the frame pointer and the context in top. |
@@ -316,7 +317,7 @@ void MacroAssembler::EnterExitFrame(StackFrame::Type type) { |
#ifdef ENABLE_DEBUGGER_SUPPORT |
// Save the state of all registers to the stack from the memory |
// location. This is needed to allow nested break points. |
- if (type == StackFrame::EXIT_DEBUG) { |
+ if (mode == ExitFrame::MODE_DEBUG) { |
// Use sp as base to push. |
CopyRegistersFromMemoryToStack(sp, kJSCallerSaved); |
} |
@@ -348,14 +349,14 @@ void MacroAssembler::AlignStack(int offset) { |
} |
-void MacroAssembler::LeaveExitFrame(StackFrame::Type type) { |
+void MacroAssembler::LeaveExitFrame(ExitFrame::Mode mode) { |
#ifdef ENABLE_DEBUGGER_SUPPORT |
// Restore the memory copy of the registers by digging them out from |
// the stack. This is needed to allow nested break points. |
- if (type == StackFrame::EXIT_DEBUG) { |
+ if (mode == ExitFrame::MODE_DEBUG) { |
// This code intentionally clobbers r2 and r3. |
const int kCallerSavedSize = kNumJSCallerSaved * kPointerSize; |
- const int kOffset = ExitFrameConstants::kDebugMarkOffset - kCallerSavedSize; |
+ const int kOffset = ExitFrameConstants::kCodeOffset - kCallerSavedSize; |
add(r3, fp, Operand(kOffset)); |
CopyRegistersFromStackToMemory(r3, r2, kJSCallerSaved); |
} |