| Index: src/preparser.h
|
| diff --git a/src/preparser.h b/src/preparser.h
|
| index 7a68e835ff2870e5397c2be37f7f17acb4fed00f..09dcccbc0eae101a0c862db6bd9888befc70f799 100644
|
| --- a/src/preparser.h
|
| +++ b/src/preparser.h
|
| @@ -536,6 +536,7 @@ class ParserBase : public Traits {
|
| }
|
|
|
| LanguageMode language_mode() { return scope_->language_mode(); }
|
| + AsmMode asm_mode() { return scope_->asm_mode(); }
|
| bool is_generator() const { return function_state_->is_generator(); }
|
|
|
| // Report syntax errors.
|
| @@ -1143,6 +1144,11 @@ class PreParserExpression {
|
| IsUseStrongField::encode(true));
|
| }
|
|
|
| + static PreParserExpression UseAsmStringLiteral() {
|
| + return PreParserExpression(TypeField::encode(kStringLiteralExpression) |
|
| + IsUseAsmField::encode(true));
|
| + }
|
| +
|
| static PreParserExpression This() {
|
| return PreParserExpression(TypeField::encode(kExpression) |
|
| ExpressionTypeField::encode(kThisExpression));
|
| @@ -1194,6 +1200,11 @@ class PreParserExpression {
|
| IsUseStrongField::decode(code_);
|
| }
|
|
|
| + bool IsUseAsmLiteral() const {
|
| + return TypeField::decode(code_) == kStringLiteralExpression &&
|
| + IsUseAsmField::decode(code_);
|
| + }
|
| +
|
| bool IsThis() const {
|
| return TypeField::decode(code_) == kExpression &&
|
| ExpressionTypeField::decode(code_) == kThisExpression;
|
| @@ -1277,6 +1288,7 @@ class PreParserExpression {
|
| typedef BitField<ExpressionType, TypeField::kNext, 3> ExpressionTypeField;
|
| typedef BitField<bool, TypeField::kNext, 1> IsUseStrictField;
|
| typedef BitField<bool, IsUseStrictField::kNext, 1> IsUseStrongField;
|
| + typedef BitField<bool, IsUseStrongField::kNext, 1> IsUseAsmField;
|
| typedef BitField<PreParserIdentifier::Type, TypeField::kNext, 10>
|
| IdentifierTypeField;
|
|
|
| @@ -1327,6 +1339,9 @@ class PreParserStatement {
|
| if (expression.IsUseStrongLiteral()) {
|
| return PreParserStatement(kUseStrongExpressionStatement);
|
| }
|
| + if (expression.IsUseAsmLiteral()) {
|
| + return PreParserStatement(kUseAsmExpressionStatement);
|
| + }
|
| if (expression.IsStringLiteral()) {
|
| return PreParserStatement(kStringLiteralExpressionStatement);
|
| }
|
| @@ -1343,6 +1358,8 @@ class PreParserStatement {
|
|
|
| bool IsUseStrongLiteral() { return code_ == kUseStrongExpressionStatement; }
|
|
|
| + bool IsUseAsmLiteral() { return code_ == kUseAsmExpressionStatement; }
|
| +
|
| bool IsFunctionDeclaration() {
|
| return code_ == kFunctionDeclaration;
|
| }
|
| @@ -1358,6 +1375,7 @@ class PreParserStatement {
|
| kStringLiteralExpressionStatement,
|
| kUseStrictExpressionStatement,
|
| kUseStrongExpressionStatement,
|
| + kUseAsmExpressionStatement,
|
| kFunctionDeclaration
|
| };
|
|
|
|
|