Chromium Code Reviews| Index: src/scanner.h |
| diff --git a/src/scanner.h b/src/scanner.h |
| index 92588905ad609b7ea64d8c5c7c2007d3e55d409b..393f0a0981f7853f4a9a84c7559899ae9e311489 100644 |
| --- a/src/scanner.h |
| +++ b/src/scanner.h |
| @@ -399,6 +399,8 @@ class Scanner { |
| // Returns the next token and advances input. |
| Token::Value Next(); |
| + // Returns the token following peek() |
| + Token::Value PeekAhead(); |
| // Returns the current token again. |
| Token::Value current_token() { return current_.token; } |
| // Returns the location information for the current token |
| @@ -527,6 +529,8 @@ class Scanner { |
| // Initialize current_ to not refer to a literal. |
| current_.literal_chars = NULL; |
| current_.raw_literal_chars = NULL; |
| + uber_next_.token = Token::UNINITIALIZED; |
| + prev_.token = Token::UNINITIALIZED; |
| } |
| // Support BookmarkScope functionality. |
| @@ -539,16 +543,23 @@ class Scanner { |
| // Literal buffer support |
| inline void StartLiteral() { |
| - LiteralBuffer* free_buffer = (current_.literal_chars == &literal_buffer1_) ? |
| - &literal_buffer2_ : &literal_buffer1_; |
| + LiteralBuffer* free_buffer = |
| + (current_.literal_chars == &literal_buffers_[0]) |
|
adamk
2015/08/15 00:28:31
Why switch to using an array for this? The advanta
adamk
2015/08/17 18:24:39
I didn't see this addressed in the latest patch.
Dan Ehrenberg
2015/08/17 18:35:19
Oops, fixed.
|
| + ? &literal_buffers_[1] |
| + : (current_.literal_chars == &literal_buffers_[1]) |
| + ? &literal_buffers_[2] |
| + : &literal_buffers_[0]; |
| free_buffer->Reset(); |
| next_.literal_chars = free_buffer; |
| } |
| inline void StartRawLiteral() { |
| LiteralBuffer* free_buffer = |
| - (current_.raw_literal_chars == &raw_literal_buffer1_) ? |
| - &raw_literal_buffer2_ : &raw_literal_buffer1_; |
| + (current_.raw_literal_chars == &raw_literal_buffers_[0]) |
| + ? &raw_literal_buffers_[1] |
| + : (current_.raw_literal_chars == &raw_literal_buffers_[1]) |
| + ? &raw_literal_buffers_[2] |
| + : &raw_literal_buffers_[0]; |
| free_buffer->Reset(); |
| next_.raw_literal_chars = free_buffer; |
| } |
| @@ -725,19 +736,19 @@ class Scanner { |
| UnicodeCache* unicode_cache_; |
| // Buffers collecting literal strings, numbers, etc. |
| - LiteralBuffer literal_buffer1_; |
| - LiteralBuffer literal_buffer2_; |
| + LiteralBuffer literal_buffers_[3]; |
| // Values parsed from magic comments. |
| LiteralBuffer source_url_; |
| LiteralBuffer source_mapping_url_; |
| // Buffer to store raw string values |
| - LiteralBuffer raw_literal_buffer1_; |
| - LiteralBuffer raw_literal_buffer2_; |
| + LiteralBuffer raw_literal_buffers_[3]; |
| - TokenDesc current_; // desc for current token (as returned by Next()) |
| - TokenDesc next_; // desc for next token (one token look-ahead) |
| + TokenDesc current_; // desc for current token (as returned by Next()) |
| + TokenDesc next_; // desc for next token (one token look-ahead) |
| + TokenDesc uber_next_; // desc for the token after next (push-back) |
|
adamk
2015/08/15 00:28:31
I think "next_next_" is clearer in English. That's
|
| + TokenDesc prev_; // desc for the previous token (stash for pushback) |
| // Variables for Scanner::BookmarkScope and the *Bookmark implementation. |
| // These variables contain the scanner state when a bookmark is set. |