Chromium Code Reviews| Index: src/scanner-base.cc |
| diff --git a/src/scanner-base.cc b/src/scanner-base.cc |
| index 9e58c4e6371d746fe4ef523701c14015390be70f..e23d5a3c4a1c500f926be2671bd0b49ab59f7607 100644 |
| --- a/src/scanner-base.cc |
| +++ b/src/scanner-base.cc |
| @@ -35,12 +35,6 @@ namespace v8 { |
| namespace internal { |
| // ---------------------------------------------------------------------------- |
| -// UTF16Buffer |
| - |
| -UTF16Buffer::UTF16Buffer() |
| - : pos_(0), end_(kNoEndPosition) { } |
| - |
| -// ---------------------------------------------------------------------------- |
| // LiteralCollector |
| LiteralCollector::LiteralCollector() |
| @@ -92,7 +86,7 @@ bool ScannerConstants::IsIdentifier(unibrow::CharacterStream* buffer) { |
| // ---------------------------------------------------------------------------- |
| // Scanner |
| -Scanner::Scanner() : source_(NULL) {} |
| +Scanner::Scanner() { } |
| uc32 Scanner::ScanHexEscape(uc32 c, int length) { |
| @@ -142,8 +136,7 @@ uc32 Scanner::ScanOctalEscape(uc32 c, int length) { |
| // ---------------------------------------------------------------------------- |
| // JavaScriptScanner |
| -JavaScriptScanner::JavaScriptScanner() |
| - : has_line_terminator_before_next_(false) {} |
| +JavaScriptScanner::JavaScriptScanner() : Scanner() {} |
| Token::Value JavaScriptScanner::Next() { |
| @@ -503,12 +496,21 @@ void JavaScriptScanner::Scan() { |
| void JavaScriptScanner::SeekForward(int pos) { |
| - source_->SeekForward(pos - 1); |
| - Advance(); |
| - // This function is only called to seek to the location |
| - // of the end of a function (at the "}" token). It doesn't matter |
| - // whether there was a line terminator in the part we skip. |
| - has_line_terminator_before_next_ = false; |
| + // After this call, we will have the token at the given position as |
| + // the "next" token. The "current" token will be invalid. |
| + if (pos == next_.location.beg_pos) return; |
| + int current_pos = source_pos(); |
| + ASSERT_EQ(next_.location.end_pos, current_pos); |
| + // Positions inside the lookahead token isn't supported. |
|
Erik Corry
2010/12/07 12:27:30
Positions ... isn't -> Positions ... are not
Lasse Reichstein
2010/12/07 14:05:54
Done.
|
| + ASSERT(pos >= current_pos); |
| + if (pos != current_pos) { |
| + source_->SeekForward(pos - source_->pos()); |
| + Advance(); |
| + // This function is only called to seek to the location |
| + // of the end of a function (at the "}" token). It doesn't matter |
| + // whether there was a line terminator in the part we skip. |
| + has_line_terminator_before_next_ = false; |
|
Erik Corry
2010/12/07 12:27:30
Can't we assert something here to back up the comm
Lasse Reichstein
2010/12/07 14:05:54
We can't know whether there is a newline before, s
|
| + } |
| Scan(); |
| } |