Index: src/debug.cc |
diff --git a/src/debug.cc b/src/debug.cc |
index dbf9df9fda3d8e759f97703f4e6695df740104b8..c13c8c98785b634dc2c300295ef61f0844b0b9d9 100644 |
--- a/src/debug.cc |
+++ b/src/debug.cc |
@@ -582,6 +582,35 @@ int Debug::ArchiveSpacePerThread() { |
} |
+// Frame structure (conforms InternalFrame structure): |
+// -- code |
+// -- SMI maker |
+// -- function (slot is called "context") |
+// -- frame base |
+Object** Debug::SetUpFrameDropperFrame(StackFrame* bottom_js_frame, |
+ Handle<Code> code) { |
+ ASSERT(bottom_js_frame->is_java_script()); |
+ |
+ Address fp = bottom_js_frame->fp(); |
+ |
+ // Move function pointer into "context" slot. |
+ Memory::Object_at(fp + StandardFrameConstants::kContextOffset) = |
+ Memory::Object_at(fp + JavaScriptFrameConstants::kFunctionOffset); |
+ |
+ Memory::Object_at(fp + InternalFrameConstants::kCodeOffset) = *code; |
+ Memory::Object_at(fp + StandardFrameConstants::kMarkerOffset) = |
+ Smi::FromInt(StackFrame::INTERNAL); |
+ |
+ return reinterpret_cast<Object**>(&Memory::Object_at( |
+ fp + StandardFrameConstants::kContextOffset)); |
+} |
+ |
+const int Debug::kFrameDropperFrameSize = 4; |
+ |
+ |
+ |
+ |
+ |
// Default break enabled. |
bool Debug::disable_break_ = false; |