| 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); | 
| } | 
|  |