Index: src/frames.cc |
diff --git a/src/frames.cc b/src/frames.cc |
index 5cd83324c6f9ac4f43f6eb92e6dff916ada77ecd..d7302dea3da0eb9c0c5c9ecb9938ffc53df17e62 100644 |
--- a/src/frames.cc |
+++ b/src/frames.cc |
@@ -393,8 +393,19 @@ Code* EntryConstructFrame::code() const { |
} |
+Object*& ExitFrame::code_slot() const { |
+ const int offset = ExitFrameConstants::kCodeOffset; |
+ return Memory::Object_at(fp() + offset); |
+} |
+ |
+ |
Code* ExitFrame::code() const { |
- return Heap::c_entry_code(); |
+ Object* code = code_slot(); |
+ if (code->IsSmi()) { |
+ return Heap::c_entry_debug_break_code(); |
+ } else { |
+ return Code::cast(code); |
+ } |
} |
@@ -412,11 +423,6 @@ Address ExitFrame::GetCallerStackPointer() const { |
} |
-Code* ExitDebugFrame::code() const { |
- return Heap::c_entry_debug_break_code(); |
-} |
- |
- |
Address StandardFrame::GetExpressionAddress(int n) const { |
const int offset = StandardFrameConstants::kExpressionsOffset; |
return fp() + offset - n * kPointerSize; |