Index: src/debug/debug.cc |
diff --git a/src/debug/debug.cc b/src/debug/debug.cc |
index a15743dcd6e303dd1a0c67c31b371eccd4981b6f..56eb8cbdd998aaac176c4920e07c4cef88cab7e0 100644 |
--- a/src/debug/debug.cc |
+++ b/src/debug/debug.cc |
@@ -84,6 +84,15 @@ BreakLocation::Iterator::Iterator(Handle<DebugInfo> debug_info) |
position_(1), |
statement_position_(1) {} |
+int BreakLocation::Iterator::ReturnPosition() { |
+ if (debug_info_->shared()->HasSourceCode()) { |
+ return debug_info_->shared()->end_position() - |
+ debug_info_->shared()->start_position() - 1; |
+ } else { |
+ return 0; |
+ } |
+} |
+ |
BreakLocation::CodeIterator::CodeIterator(Handle<DebugInfo> debug_info, |
BreakLocatorType type) |
: Iterator(debug_info), |
@@ -137,13 +146,7 @@ void BreakLocation::CodeIterator::Next() { |
if (RelocInfo::IsDebugBreakSlotAtReturn(rmode())) { |
// Set the positions to the end of the function. |
- if (debug_info_->shared()->HasSourceCode()) { |
- position_ = debug_info_->shared()->end_position() - |
- debug_info_->shared()->start_position() - 1; |
- } else { |
- position_ = 0; |
- } |
- statement_position_ = position_; |
+ statement_position_ = position_ = ReturnPosition(); |
} |
break; |
@@ -201,8 +204,10 @@ void BreakLocation::BytecodeArrayIterator::Next() { |
if (break_locator_type_ == ALL_BREAK_LOCATIONS) break; |
DCHECK_EQ(CALLS_AND_RETURNS, break_locator_type_); |
- if (type == DEBUG_BREAK_SLOT_AT_CALL || |
- type == DEBUG_BREAK_SLOT_AT_RETURN) { |
+ if (type == DEBUG_BREAK_SLOT_AT_CALL) break; |
+ if (type == DEBUG_BREAK_SLOT_AT_RETURN) { |
+ DCHECK_EQ(ReturnPosition(), position_); |
+ DCHECK_EQ(ReturnPosition(), statement_position_); |
break; |
} |
} |