Index: src/ia32/debug-ia32.cc |
diff --git a/src/ia32/debug-ia32.cc b/src/ia32/debug-ia32.cc |
index 9b558bd90b5af27d8a97cbe085199916fad486a1..dfa663420016c2a7e9202d8c1bd2813c89928031 100644 |
--- a/src/ia32/debug-ia32.cc |
+++ b/src/ia32/debug-ia32.cc |
@@ -265,6 +265,10 @@ void Debug::GeneratePlainReturnLiveEdit(MacroAssembler* masm) { |
// -- context |
// -- frame base |
void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) { |
+ ExternalReference restarter_frame_function_slot = |
+ ExternalReference(Debug_Address::RestarterFrameFunctionPointer()); |
+ __ mov(Operand::StaticVariable(restarter_frame_function_slot), Immediate(0)); |
+ |
// We do not know our frame height, but set esp based on ebp. |
__ lea(esp, Operand(ebp, -4 * kPointerSize)); |
@@ -288,8 +292,10 @@ void Debug::GenerateFrameDropperLiveEdit(MacroAssembler* masm) { |
#undef __ |
-void Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame, |
- Handle<Code> code) { |
+// TODO(LiveEdit): consider making it platform-independent. |
+// TODO(LiveEdit): use more named constants instead of numbers. |
+Object** Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame, |
+ Handle<Code> code) { |
ASSERT(bottom_js_frame->is_java_script()); |
Address fp = bottom_js_frame->fp(); |
@@ -298,7 +304,10 @@ void Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame, |
Memory::Object_at(fp - 3 * kPointerSize) = *code; |
Memory::Object_at(fp - 2 * kPointerSize) = Smi::FromInt(StackFrame::INTERNAL); |
+ |
+ return reinterpret_cast<Object**>(&Memory::Object_at(fp - 4 * kPointerSize)); |
} |
+ |
const int Debug::kFrameDropperFrameSize = 5; |