Index: src/frames.cc |
diff --git a/src/frames.cc b/src/frames.cc |
index 9b06fb6fdcf6ba1bd64cd1eb3c005dab8d0d68c1..23bcedae1f9fc32d77c45fb15b46df30c7a2222c 100644 |
--- a/src/frames.cc |
+++ b/src/frames.cc |
@@ -617,13 +617,7 @@ bool StandardFrame::IsExpressionInsideHandler(int n) const { |
} |
-void CompiledFrame::Iterate(ObjectVisitor* v) const { |
-#ifdef DEBUG |
- // Make sure that optimized frames do not contain any stack handlers. |
- StackHandlerIterator it(this, top_handler()); |
- ASSERT(it.done()); |
-#endif |
- |
+void StandardFrame::IterateCompiledFrame(ObjectVisitor* v) const { |
// Make sure that we're not doing "safe" stack frame iteration. We cannot |
// possibly find pointers in optimized frames in that state. |
ASSERT(!SafeStackFrameIterator::is_active(isolate())); |
@@ -687,12 +681,33 @@ void CompiledFrame::Iterate(ObjectVisitor* v) const { |
void StubFrame::Iterate(ObjectVisitor* v) const { |
- CompiledFrame::Iterate(v); |
+ IterateCompiledFrame(v); |
+} |
+ |
+ |
+Code* StubFrame::unchecked_code() const { |
+ return static_cast<Code*>(isolate()->heap()->FindCodeObject(pc())); |
+} |
+ |
+ |
+Address StubFrame::GetCallerStackPointer() const { |
+ return fp() + ExitFrameConstants::kCallerSPDisplacement; |
+} |
+ |
+ |
+int StubFrame::GetNumberOfIncomingArguments() const { |
+ return 0; |
} |
void OptimizedFrame::Iterate(ObjectVisitor* v) const { |
- CompiledFrame::Iterate(v); |
+#ifdef DEBUG |
+ // Make sure that optimized frames do not contain any stack handlers. |
+ StackHandlerIterator it(this, top_handler()); |
+ ASSERT(it.done()); |
+#endif |
+ |
+ IterateCompiledFrame(v); |
// Visit the context and the function. |
Object** fixed_base = &Memory::Object_at( |