| Index: src/assembler.cc
 | 
| diff --git a/src/assembler.cc b/src/assembler.cc
 | 
| index ce90dceacbc9f8b0e3651efd5fb4f18f50cc6d24..7493673e8191f68e74fcbb6b465591897d832b3b 100644
 | 
| --- a/src/assembler.cc
 | 
| +++ b/src/assembler.cc
 | 
| @@ -804,4 +804,53 @@ ExternalReference ExternalReference::debug_step_in_fp_address() {
 | 
|  }
 | 
|  #endif
 | 
|  
 | 
| +
 | 
| +void PositionsRecorder::RecordPosition(int pos,
 | 
| +                                       PositionRecordingType recording_type) {
 | 
| +  ASSERT(pos != RelocInfo::kNoPosition);
 | 
| +  ASSERT(pos >= 0);
 | 
| +  current_position_ = pos;
 | 
| +  current_position_recording_type_ = recording_type;
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void PositionsRecorder::RecordStatementPosition(int pos) {
 | 
| +  ASSERT(pos != RelocInfo::kNoPosition);
 | 
| +  ASSERT(pos >= 0);
 | 
| +  current_statement_position_ = pos;
 | 
| +}
 | 
| +
 | 
| +
 | 
| +bool PositionsRecorder::WriteRecordedPositions() {
 | 
| +  bool written = false;
 | 
| +
 | 
| +  // Write the statement position if it is different from what was written last
 | 
| +  // time.
 | 
| +  if (current_statement_position_ != written_statement_position_) {
 | 
| +    EnsureSpace ensure_space(assembler_);
 | 
| +    assembler_->RecordRelocInfo(RelocInfo::STATEMENT_POSITION,
 | 
| +                                current_statement_position_);
 | 
| +    written_statement_position_ = current_statement_position_;
 | 
| +    written = true;
 | 
| +  }
 | 
| +
 | 
| +  // Write the position if it is different from what was written last time and
 | 
| +  // also different from the written statement position or was forced.
 | 
| +  if (current_position_ != written_position_ &&
 | 
| +      (current_position_ != current_statement_position_ || !written) &&
 | 
| +      (current_position_ != written_statement_position_
 | 
| +       || current_position_recording_type_ == FORCED_POSITION)) {
 | 
| +    EnsureSpace ensure_space(assembler_);
 | 
| +    assembler_->RecordRelocInfo(RelocInfo::POSITION, current_position_);
 | 
| +    written_position_ = current_position_;
 | 
| +    written = true;
 | 
| +  }
 | 
| +
 | 
| +  current_position_recording_type_ = NORMAL_POSITION;
 | 
| +
 | 
| +  // Return whether something was written.
 | 
| +  return written;
 | 
| +}
 | 
| +
 | 
| +
 | 
|  } }  // namespace v8::internal
 | 
| 
 |