| Index: src/parsing/parser.h
|
| diff --git a/src/parsing/parser.h b/src/parsing/parser.h
|
| index d01931d87741f5eacebbe776fc94d284bf580bd1..860960d129c6b81005e73313348f237cf1704237 100644
|
| --- a/src/parsing/parser.h
|
| +++ b/src/parsing/parser.h
|
| @@ -157,6 +157,8 @@ struct ParserTypes<Parser> {
|
| typedef v8::internal::Statement* Statement;
|
| typedef ZoneList<v8::internal::Statement*>* StatementList;
|
| typedef v8::internal::Block* Block;
|
| + typedef v8::internal::BreakableStatement* BreakableStatementT;
|
| + typedef v8::internal::IterationStatement* IterationStatementT;
|
|
|
| // For constructing objects returned by the traversing functions.
|
| typedef AstNodeFactory Factory;
|
| @@ -203,12 +205,6 @@ class Parser : public ParserBase<Parser> {
|
|
|
| enum class FunctionBodyType { kNormal, kSingleExpression };
|
|
|
| - DeclarationScope* GetDeclarationScope() const {
|
| - return scope()->GetDeclarationScope();
|
| - }
|
| - DeclarationScope* GetClosureScope() const {
|
| - return scope()->GetClosureScope();
|
| - }
|
| Variable* NewTemporary(const AstRawString* name) {
|
| return scope()->NewTemporary(name);
|
| }
|
| @@ -280,6 +276,11 @@ class Parser : public ParserBase<Parser> {
|
| Block* block, const DeclarationDescriptor* declaration_descriptor,
|
| const DeclarationParsingResult::Declaration* declaration,
|
| ZoneList<const AstRawString*>* names, bool* ok);
|
| + ZoneList<const AstRawString*>* DeclareLabel(
|
| + ZoneList<const AstRawString*>* labels, VariableProxy* expr, bool* ok);
|
| + bool ContainsLabel(ZoneList<const AstRawString*>* labels,
|
| + const AstRawString* label);
|
| + Expression* RewriteReturn(Expression* return_value, int pos);
|
|
|
| Statement* DeclareFunction(const AstRawString* variable_name,
|
| FunctionLiteral* function, int pos,
|
| @@ -370,17 +371,6 @@ class Parser : public ParserBase<Parser> {
|
| DEFINE_AST_VISITOR_MEMBERS_WITHOUT_STACKOVERFLOW()
|
| };
|
|
|
| - Statement* ParseExpressionOrLabelledStatement(
|
| - ZoneList<const AstRawString*>* labels,
|
| - AllowLabelledFunctionStatement allow_function, bool* ok);
|
| - IfStatement* ParseIfStatement(ZoneList<const AstRawString*>* labels,
|
| - bool* ok);
|
| - Statement* ParseContinueStatement(bool* ok);
|
| - Statement* ParseBreakStatement(ZoneList<const AstRawString*>* labels,
|
| - bool* ok);
|
| - Statement* ParseReturnStatement(bool* ok);
|
| - Statement* ParseWithStatement(ZoneList<const AstRawString*>* labels,
|
| - bool* ok);
|
| CaseClause* ParseCaseClause(bool* default_seen_ptr, bool* ok);
|
| Statement* ParseSwitchStatement(ZoneList<const AstRawString*>* labels,
|
| bool* ok);
|
| @@ -641,9 +631,13 @@ class Parser : public ParserBase<Parser> {
|
| property->obj()->AsVariableProxy()->is_this();
|
| }
|
|
|
| + // This returns true if the expression is an indentifier (wrapped
|
| + // inside a variable proxy). We exclude the case of 'this', which
|
| + // has been converted to a variable proxy.
|
| V8_INLINE static bool IsIdentifier(Expression* expression) {
|
| + DCHECK_NOT_NULL(expression);
|
| VariableProxy* operand = expression->AsVariableProxy();
|
| - return operand != NULL && !operand->is_this();
|
| + return operand != nullptr && !operand->is_this();
|
| }
|
|
|
| V8_INLINE static const AstRawString* AsIdentifier(Expression* expression) {
|
| @@ -651,6 +645,10 @@ class Parser : public ParserBase<Parser> {
|
| return expression->AsVariableProxy()->raw_name();
|
| }
|
|
|
| + V8_INLINE VariableProxy* AsIdentifierExpression(Expression* expression) {
|
| + return expression->AsVariableProxy();
|
| + }
|
| +
|
| V8_INLINE bool IsPrototype(const AstRawString* identifier) const {
|
| return identifier == ast_value_factory()->prototype_string();
|
| }
|
| @@ -670,6 +668,13 @@ class Parser : public ParserBase<Parser> {
|
| return ObjectLiteral::IsBoilerplateProperty(property);
|
| }
|
|
|
| + V8_INLINE bool IsNative(Expression* expr) const {
|
| + DCHECK_NOT_NULL(expr);
|
| + return expr->IsVariableProxy() &&
|
| + expr->AsVariableProxy()->raw_name() ==
|
| + ast_value_factory()->native_string();
|
| + }
|
| +
|
| V8_INLINE static bool IsArrayIndex(const AstRawString* string,
|
| uint32_t* index) {
|
| return string->AsArrayIndex(index);
|
| @@ -835,6 +840,9 @@ class Parser : public ParserBase<Parser> {
|
|
|
| // "null" return type creators.
|
| V8_INLINE static const AstRawString* EmptyIdentifier() { return nullptr; }
|
| + V8_INLINE static bool IsEmptyIdentifier(const AstRawString* name) {
|
| + return name == nullptr;
|
| + }
|
| V8_INLINE static Expression* EmptyExpression() { return nullptr; }
|
| V8_INLINE static Literal* EmptyLiteral() { return nullptr; }
|
| V8_INLINE static ObjectLiteralProperty* EmptyObjectLiteralProperty() {
|
| @@ -862,8 +870,10 @@ class Parser : public ParserBase<Parser> {
|
| return stmts == nullptr;
|
| }
|
| V8_INLINE static Statement* NullStatement() { return nullptr; }
|
| - V8_INLINE bool IsNullOrEmptyStatement(Statement* stmt) {
|
| - return stmt == nullptr || stmt->IsEmpty();
|
| + V8_INLINE bool IsNullStatement(Statement* stmt) { return stmt == nullptr; }
|
| + V8_INLINE bool IsEmptyStatement(Statement* stmt) {
|
| + DCHECK_NOT_NULL(stmt);
|
| + return stmt->IsEmpty();
|
| }
|
|
|
| // Non-NULL empty string.
|
|
|