| Index: src/scanner-base.cc
|
| diff --git a/src/scanner-base.cc b/src/scanner-base.cc
|
| index 9e58c4e6371d746fe4ef523701c14015390be70f..a01e75efe0eafde283461db7152b2ba2d6225628 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,13 +496,23 @@ 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 aren't supported.
|
| + 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;
|
| + }
|
| Scan();
|
| + ASSERT_EQ(Token::RBRACE, next_.token);
|
| }
|
|
|
|
|
|
|