Index: src/frames.cc |
diff --git a/src/frames.cc b/src/frames.cc |
index 16b73c0e019502a16d595e8e3ca379b7af0e7f57..5ea0fd84ca3eac49fe61cb92aeefb0dae972a066 100644 |
--- a/src/frames.cc |
+++ b/src/frames.cc |
@@ -289,8 +289,7 @@ SafeStackFrameIterator::SafeStackFrameIterator( |
stack_validator_(low_bound, high_bound), |
is_valid_top_(IsValidTop(isolate, low_bound, high_bound)), |
is_valid_fp_(IsWithinBounds(low_bound, high_bound, fp)), |
- is_working_iterator_(is_valid_top_ || is_valid_fp_), |
- iteration_done_(!is_working_iterator_), |
+ iteration_done_(!is_valid_top_ && !is_valid_fp_), |
iterator_(isolate, is_valid_top_, is_valid_fp_ ? fp : NULL, sp) { |
} |
@@ -310,7 +309,6 @@ bool SafeStackFrameIterator::IsValidTop(Isolate* isolate, |
void SafeStackFrameIterator::Advance() { |
- ASSERT(is_working_iterator_); |
ASSERT(!done()); |
StackFrame* last_frame = iterator_.frame(); |
Address last_sp = last_frame->sp(), last_fp = last_frame->fp(); |
@@ -564,6 +562,11 @@ StackFrame::Type ExitFrame::GetStateForFramePointer(Address fp, State* state) { |
} |
+Address ExitFrame::ComputeStackPointer(Address fp) { |
+ return Memory::Address_at(fp + ExitFrameConstants::kSPOffset); |
+} |
+ |
+ |
void ExitFrame::FillState(Address fp, Address sp, State* state) { |
state->sp = sp; |
state->fp = fp; |