| 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; | 
| } | 
| } | 
|  |