Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(689)

Side by Side Diff: src/parsing/preparser.cc

Issue 2256163002: [parser] Refactor preparser GetSymbol (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@nickie-2179423002-ref-traits
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <cmath> 5 #include <cmath>
6 6
7 #include "src/allocation.h" 7 #include "src/allocation.h"
8 #include "src/base/logging.h" 8 #include "src/base/logging.h"
9 #include "src/conversions-inl.h" 9 #include "src/conversions-inl.h"
10 #include "src/conversions.h" 10 #include "src/conversions.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 51
52 void PreParserTraits::ReportMessageAt(Scanner::Location location, 52 void PreParserTraits::ReportMessageAt(Scanner::Location location,
53 MessageTemplate::Template message, 53 MessageTemplate::Template message,
54 const AstRawString* arg, 54 const AstRawString* arg,
55 ParseErrorType error_type) { 55 ParseErrorType error_type) {
56 UNREACHABLE(); 56 UNREACHABLE();
57 } 57 }
58 58
59 59
60 PreParserIdentifier PreParserTraits::GetSymbol(Scanner* scanner) { 60 PreParserIdentifier PreParserTraits::GetSymbol(Scanner* scanner) {
61 if (scanner->current_token() == Token::ENUM) { 61 switch (scanner->current_token()) {
62 return PreParserIdentifier::Enum(); 62 case Token::ENUM:
63 } else if (scanner->current_token() == Token::AWAIT) { 63 return PreParserIdentifier::Enum();
64 return PreParserIdentifier::Await(); 64 case Token::AWAIT:
65 } else if (scanner->current_token() == 65 return PreParserIdentifier::Await();
66 Token::FUTURE_STRICT_RESERVED_WORD) { 66 case Token::FUTURE_STRICT_RESERVED_WORD:
67 return PreParserIdentifier::FutureStrictReserved(); 67 return PreParserIdentifier::FutureStrictReserved();
68 } else if (scanner->current_token() == Token::LET) { 68 case Token::LET:
69 return PreParserIdentifier::Let(); 69 return PreParserIdentifier::Let();
70 } else if (scanner->current_token() == Token::STATIC) { 70 case Token::STATIC:
71 return PreParserIdentifier::Static(); 71 return PreParserIdentifier::Static();
72 } else if (scanner->current_token() == Token::YIELD) { 72 case Token::YIELD:
73 return PreParserIdentifier::Yield(); 73 return PreParserIdentifier::Yield();
74 } else if (scanner->current_token() == Token::ASYNC) { 74 case Token::ASYNC:
75 return PreParserIdentifier::Async(); 75 return PreParserIdentifier::Async();
76 default:
77 if (scanner->UnescapedLiteralMatches("eval", 4))
78 return PreParserIdentifier::Eval();
79 if (scanner->UnescapedLiteralMatches("arguments", 9))
80 return PreParserIdentifier::Arguments();
81 if (scanner->UnescapedLiteralMatches("undefined", 9))
82 return PreParserIdentifier::Undefined();
83 if (scanner->LiteralMatches("prototype", 9))
84 return PreParserIdentifier::Prototype();
85 if (scanner->LiteralMatches("constructor", 11))
86 return PreParserIdentifier::Constructor();
87 return PreParserIdentifier::Default();
76 } 88 }
77 if (scanner->UnescapedLiteralMatches("eval", 4)) {
78 return PreParserIdentifier::Eval();
79 }
80 if (scanner->UnescapedLiteralMatches("arguments", 9)) {
81 return PreParserIdentifier::Arguments();
82 }
83 if (scanner->UnescapedLiteralMatches("undefined", 9)) {
84 return PreParserIdentifier::Undefined();
85 }
86 if (scanner->LiteralMatches("prototype", 9)) {
87 return PreParserIdentifier::Prototype();
88 }
89 if (scanner->LiteralMatches("constructor", 11)) {
90 return PreParserIdentifier::Constructor();
91 }
92 return PreParserIdentifier::Default();
93 } 89 }
94 90
95 91
96 PreParserExpression PreParserTraits::ExpressionFromString( 92 PreParserExpression PreParserTraits::ExpressionFromString(
97 int pos, Scanner* scanner, PreParserFactory* factory) { 93 int pos, Scanner* scanner, PreParserFactory* factory) {
98 if (scanner->UnescapedLiteralMatches("use strict", 10)) { 94 if (scanner->UnescapedLiteralMatches("use strict", 10)) {
99 return PreParserExpression::UseStrictStringLiteral(); 95 return PreParserExpression::UseStrictStringLiteral();
100 } 96 }
101 return PreParserExpression::StringLiteral(); 97 return PreParserExpression::StringLiteral();
102 } 98 }
(...skipping 1203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1306 1302
1307 body->Add(PreParserStatement::ExpressionStatement(return_value), zone()); 1303 body->Add(PreParserStatement::ExpressionStatement(return_value), zone());
1308 } 1304 }
1309 1305
1310 #undef CHECK_OK 1306 #undef CHECK_OK
1311 #undef CHECK_OK_CUSTOM 1307 #undef CHECK_OK_CUSTOM
1312 1308
1313 1309
1314 } // namespace internal 1310 } // namespace internal
1315 } // namespace v8 1311 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698