Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #ifndef V8_PARSING_PARSER_H_ | 5 #ifndef V8_PARSING_PARSER_H_ |
| 6 #define V8_PARSING_PARSER_H_ | 6 #define V8_PARSING_PARSER_H_ |
| 7 | 7 |
| 8 #include "src/ast/ast.h" | 8 #include "src/ast/ast.h" |
| 9 #include "src/ast/scopes.h" | 9 #include "src/ast/scopes.h" |
| 10 #include "src/parsing/parser-base.h" | 10 #include "src/parsing/parser-base.h" |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 typedef ParserBase<Parser> Base; | 142 typedef ParserBase<Parser> Base; |
| 143 typedef Parser Impl; | 143 typedef Parser Impl; |
| 144 | 144 |
| 145 typedef Variable GeneratorVariable; | 145 typedef Variable GeneratorVariable; |
| 146 | 146 |
| 147 // Return types for traversing functions. | 147 // Return types for traversing functions. |
| 148 typedef const AstRawString* Identifier; | 148 typedef const AstRawString* Identifier; |
| 149 typedef v8::internal::Expression* Expression; | 149 typedef v8::internal::Expression* Expression; |
| 150 typedef v8::internal::FunctionLiteral* FunctionLiteral; | 150 typedef v8::internal::FunctionLiteral* FunctionLiteral; |
| 151 typedef ObjectLiteral::Property* ObjectLiteralProperty; | 151 typedef ObjectLiteral::Property* ObjectLiteralProperty; |
| 152 typedef ClassLiteral::Property* ClassLiteralProperty; | |
| 152 typedef ZoneList<v8::internal::Expression*>* ExpressionList; | 153 typedef ZoneList<v8::internal::Expression*>* ExpressionList; |
| 153 typedef ZoneList<ObjectLiteral::Property*>* PropertyList; | 154 typedef ZoneList<ObjectLiteral::Property*>* PropertyList; |
| 154 typedef ParserFormalParameters FormalParameters; | 155 typedef ParserFormalParameters FormalParameters; |
| 155 typedef ZoneList<v8::internal::Statement*>* StatementList; | 156 typedef ZoneList<v8::internal::Statement*>* StatementList; |
| 156 typedef v8::internal::Block* Block; | 157 typedef v8::internal::Block* Block; |
| 157 | 158 |
| 158 // For constructing objects returned by the traversing functions. | 159 // For constructing objects returned by the traversing functions. |
| 159 typedef AstNodeFactory Factory; | 160 typedef AstNodeFactory Factory; |
| 160 }; | 161 }; |
| 161 | 162 |
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 700 V8_INLINE static bool IsArrayIndex(const AstRawString* string, | 701 V8_INLINE static bool IsArrayIndex(const AstRawString* string, |
| 701 uint32_t* index) { | 702 uint32_t* index) { |
| 702 return string->AsArrayIndex(index); | 703 return string->AsArrayIndex(index); |
| 703 } | 704 } |
| 704 | 705 |
| 705 V8_INLINE static Expression* GetPropertyValue( | 706 V8_INLINE static Expression* GetPropertyValue( |
| 706 ObjectLiteral::Property* property) { | 707 ObjectLiteral::Property* property) { |
| 707 return property->value(); | 708 return property->value(); |
| 708 } | 709 } |
| 709 | 710 |
| 711 V8_INLINE static Expression* GetPropertyValue( | |
|
adamk
2016/09/01 21:18:23
Can't you just take a LiteralProperty* instead?
bakkot
2016/09/01 23:24:31
Whoops. Done.
| |
| 712 ClassLiteral::Property* property) { | |
| 713 return property->value(); | |
| 714 } | |
| 715 | |
| 710 // Functions for encapsulating the differences between parsing and preparsing; | 716 // Functions for encapsulating the differences between parsing and preparsing; |
| 711 // operations interleaved with the recursive descent. | 717 // operations interleaved with the recursive descent. |
| 712 V8_INLINE static void PushLiteralName(FuncNameInferrer* fni, | 718 V8_INLINE static void PushLiteralName(FuncNameInferrer* fni, |
| 713 const AstRawString* id) { | 719 const AstRawString* id) { |
| 714 fni->PushLiteralName(id); | 720 fni->PushLiteralName(id); |
| 715 } | 721 } |
| 716 | 722 |
| 717 V8_INLINE static void PushVariableName(FuncNameInferrer* fni, | 723 V8_INLINE static void PushVariableName(FuncNameInferrer* fni, |
| 718 const AstRawString* id) { | 724 const AstRawString* id) { |
| 719 fni->PushVariableName(id); | 725 fni->PushVariableName(id); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 830 arg, error_type); | 836 arg, error_type); |
| 831 } | 837 } |
| 832 | 838 |
| 833 // "null" return type creators. | 839 // "null" return type creators. |
| 834 V8_INLINE static const AstRawString* EmptyIdentifier() { return nullptr; } | 840 V8_INLINE static const AstRawString* EmptyIdentifier() { return nullptr; } |
| 835 V8_INLINE static Expression* EmptyExpression() { return nullptr; } | 841 V8_INLINE static Expression* EmptyExpression() { return nullptr; } |
| 836 V8_INLINE static Literal* EmptyLiteral() { return nullptr; } | 842 V8_INLINE static Literal* EmptyLiteral() { return nullptr; } |
| 837 V8_INLINE static ObjectLiteralProperty* EmptyObjectLiteralProperty() { | 843 V8_INLINE static ObjectLiteralProperty* EmptyObjectLiteralProperty() { |
| 838 return nullptr; | 844 return nullptr; |
| 839 } | 845 } |
| 846 V8_INLINE static ClassLiteralProperty* EmptyClassLiteralProperty() { | |
| 847 return nullptr; | |
| 848 } | |
| 840 V8_INLINE static FunctionLiteral* EmptyFunctionLiteral() { return nullptr; } | 849 V8_INLINE static FunctionLiteral* EmptyFunctionLiteral() { return nullptr; } |
| 841 V8_INLINE static Block* NullBlock() { return nullptr; } | 850 V8_INLINE static Block* NullBlock() { return nullptr; } |
| 842 | 851 |
| 843 V8_INLINE static bool IsEmptyExpression(Expression* expr) { | 852 V8_INLINE static bool IsEmptyExpression(Expression* expr) { |
| 844 return expr == nullptr; | 853 return expr == nullptr; |
| 845 } | 854 } |
| 846 | 855 |
| 847 // Used in error return values. | 856 // Used in error return values. |
| 848 V8_INLINE static ZoneList<Expression*>* NullExpressionList() { | 857 V8_INLINE static ZoneList<Expression*>* NullExpressionList() { |
| 849 return nullptr; | 858 return nullptr; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 905 return factory()->NewStringLiteral(symbol, pos); | 914 return factory()->NewStringLiteral(symbol, pos); |
| 906 } | 915 } |
| 907 | 916 |
| 908 V8_INLINE ZoneList<Expression*>* NewExpressionList(int size) const { | 917 V8_INLINE ZoneList<Expression*>* NewExpressionList(int size) const { |
| 909 return new (zone()) ZoneList<Expression*>(size, zone()); | 918 return new (zone()) ZoneList<Expression*>(size, zone()); |
| 910 } | 919 } |
| 911 V8_INLINE ZoneList<ObjectLiteral::Property*>* NewPropertyList( | 920 V8_INLINE ZoneList<ObjectLiteral::Property*>* NewPropertyList( |
| 912 int size) const { | 921 int size) const { |
| 913 return new (zone()) ZoneList<ObjectLiteral::Property*>(size, zone()); | 922 return new (zone()) ZoneList<ObjectLiteral::Property*>(size, zone()); |
| 914 } | 923 } |
| 924 V8_INLINE ZoneList<ClassLiteral::Property*>* NewClassPropertyList( | |
| 925 int size) const { | |
| 926 return new (zone()) ZoneList<ClassLiteral::Property*>(size, zone()); | |
| 927 } | |
| 915 V8_INLINE ZoneList<Statement*>* NewStatementList(int size) const { | 928 V8_INLINE ZoneList<Statement*>* NewStatementList(int size) const { |
| 916 return new (zone()) ZoneList<Statement*>(size, zone()); | 929 return new (zone()) ZoneList<Statement*>(size, zone()); |
| 917 } | 930 } |
| 918 | 931 |
| 919 V8_INLINE Block* NewBlock(ZoneList<const AstRawString*>* labels, int capacity, | 932 V8_INLINE Block* NewBlock(ZoneList<const AstRawString*>* labels, int capacity, |
| 920 bool ignore_completion_value, int pos) { | 933 bool ignore_completion_value, int pos) { |
| 921 return factory()->NewBlock(labels, capacity, ignore_completion_value, pos); | 934 return factory()->NewBlock(labels, capacity, ignore_completion_value, pos); |
| 922 } | 935 } |
| 923 | 936 |
| 924 V8_INLINE void AddParameterInitializationBlock( | 937 V8_INLINE void AddParameterInitializationBlock( |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 985 V8_INLINE static bool IsTaggedTemplate(const Expression* tag) { | 998 V8_INLINE static bool IsTaggedTemplate(const Expression* tag) { |
| 986 return tag != NULL; | 999 return tag != NULL; |
| 987 } | 1000 } |
| 988 | 1001 |
| 989 V8_INLINE void MaterializeUnspreadArgumentsLiterals(int count) {} | 1002 V8_INLINE void MaterializeUnspreadArgumentsLiterals(int count) {} |
| 990 | 1003 |
| 991 Expression* ExpressionListToExpression(ZoneList<Expression*>* args); | 1004 Expression* ExpressionListToExpression(ZoneList<Expression*>* args); |
| 992 | 1005 |
| 993 void SetFunctionNameFromPropertyName(ObjectLiteralProperty* property, | 1006 void SetFunctionNameFromPropertyName(ObjectLiteralProperty* property, |
| 994 const AstRawString* name); | 1007 const AstRawString* name); |
| 1008 void SetFunctionNameFromPropertyName(ClassLiteralProperty* property, | |
| 1009 const AstRawString* name); | |
| 995 | 1010 |
| 996 void SetFunctionNameFromIdentifierRef(Expression* value, | 1011 void SetFunctionNameFromIdentifierRef(Expression* value, |
| 997 Expression* identifier); | 1012 Expression* identifier); |
| 998 | 1013 |
| 999 V8_INLINE ZoneList<typename ExpressionClassifier::Error>* | 1014 V8_INLINE ZoneList<typename ExpressionClassifier::Error>* |
| 1000 GetReportedErrorList() const { | 1015 GetReportedErrorList() const { |
| 1001 return function_state_->GetReportedErrorList(); | 1016 return function_state_->GetReportedErrorList(); |
| 1002 } | 1017 } |
| 1003 | 1018 |
| 1004 V8_INLINE ZoneList<Expression*>* GetNonPatternList() const { | 1019 V8_INLINE ZoneList<Expression*>* GetNonPatternList() const { |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1055 static const int kLiteralTypeSlot = 0; | 1070 static const int kLiteralTypeSlot = 0; |
| 1056 static const int kElementsSlot = 1; | 1071 static const int kElementsSlot = 1; |
| 1057 | 1072 |
| 1058 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); | 1073 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); |
| 1059 }; | 1074 }; |
| 1060 | 1075 |
| 1061 } // namespace internal | 1076 } // namespace internal |
| 1062 } // namespace v8 | 1077 } // namespace v8 |
| 1063 | 1078 |
| 1064 #endif // V8_PARSING_PARSER_H_ | 1079 #endif // V8_PARSING_PARSER_H_ |
| OLD | NEW |