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

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

Issue 2289663002: [parser] Hide expression classifiers in parser implementation (Closed)
Patch Set: Created 4 years, 3 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
OLDNEW
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_PREPARSER_H 5 #ifndef V8_PARSING_PREPARSER_H
6 #define V8_PARSING_PREPARSER_H 6 #define V8_PARSING_PREPARSER_H
7 7
8 #include "src/ast/scopes.h" 8 #include "src/ast/scopes.h"
9 #include "src/bailout-reason.h" 9 #include "src/bailout-reason.h"
10 #include "src/base/hashmap.h" 10 #include "src/base/hashmap.h"
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 UNREACHABLE(); 775 UNREACHABLE();
776 } 776 }
777 Expression ParseFunctionLiteral( 777 Expression ParseFunctionLiteral(
778 Identifier name, Scanner::Location function_name_location, 778 Identifier name, Scanner::Location function_name_location,
779 FunctionNameValidity function_name_validity, FunctionKind kind, 779 FunctionNameValidity function_name_validity, FunctionKind kind,
780 int function_token_pos, FunctionLiteral::FunctionType function_type, 780 int function_token_pos, FunctionLiteral::FunctionType function_type,
781 LanguageMode language_mode, bool* ok); 781 LanguageMode language_mode, bool* ok);
782 void ParseLazyFunctionLiteralBody(bool* ok, 782 void ParseLazyFunctionLiteralBody(bool* ok,
783 Scanner::BookmarkScope* bookmark = nullptr); 783 Scanner::BookmarkScope* bookmark = nullptr);
784 784
785 PreParserExpression ParseClassLiteral(ExpressionClassifier* classifier, 785 PreParserExpression ParseClassLiteral(PreParserIdentifier name,
786 PreParserIdentifier name,
787 Scanner::Location class_name_location, 786 Scanner::Location class_name_location,
788 bool name_is_strict_reserved, int pos, 787 bool name_is_strict_reserved, int pos,
789 bool* ok); 788 bool* ok);
790 789
791 struct TemplateLiteralState {}; 790 struct TemplateLiteralState {};
792 791
793 V8_INLINE TemplateLiteralState OpenTemplateLiteral(int pos) { 792 V8_INLINE TemplateLiteralState OpenTemplateLiteral(int pos) {
794 return TemplateLiteralState(); 793 return TemplateLiteralState();
795 } 794 }
796 V8_INLINE void AddTemplateExpression(TemplateLiteralState* state, 795 V8_INLINE void AddTemplateExpression(TemplateLiteralState* state,
797 PreParserExpression expression) {} 796 PreParserExpression expression) {}
798 V8_INLINE void AddTemplateSpan(TemplateLiteralState* state, bool tail) {} 797 V8_INLINE void AddTemplateSpan(TemplateLiteralState* state, bool tail) {}
799 V8_INLINE PreParserExpression CloseTemplateLiteral( 798 V8_INLINE PreParserExpression CloseTemplateLiteral(
800 TemplateLiteralState* state, int start, PreParserExpression tag); 799 TemplateLiteralState* state, int start, PreParserExpression tag);
801 V8_INLINE void CheckConflictingVarDeclarations(Scope* scope, bool* ok) {} 800 V8_INLINE void CheckConflictingVarDeclarations(Scope* scope, bool* ok) {}
802 801
803 V8_INLINE void MarkCollectedTailCallExpressions() {} 802 V8_INLINE void MarkCollectedTailCallExpressions() {}
804 V8_INLINE void MarkTailPosition(PreParserExpression expression) {} 803 V8_INLINE void MarkTailPosition(PreParserExpression expression) {}
805 804
806 void ParseAsyncArrowSingleExpressionBody(PreParserStatementList body, 805 void ParseAsyncArrowSingleExpressionBody(PreParserStatementList body,
807 bool accept_IN, 806 bool accept_IN,
808 ExpressionClassifier* classifier,
809 int pos, bool* ok); 807 int pos, bool* ok);
810 808
811 V8_INLINE PreParserExpressionList 809 V8_INLINE PreParserExpressionList
812 PrepareSpreadArguments(PreParserExpressionList list) { 810 PrepareSpreadArguments(PreParserExpressionList list) {
813 return list; 811 return list;
814 } 812 }
815 813
816 V8_INLINE PreParserExpression SpreadCall(PreParserExpression function, 814 V8_INLINE PreParserExpression SpreadCall(PreParserExpression function,
817 PreParserExpressionList args, 815 PreParserExpressionList args,
818 int pos); 816 int pos);
(...skipping 15 matching lines...) Expand all
834 832
835 V8_INLINE PreParserExpression 833 V8_INLINE PreParserExpression
836 RewriteAwaitExpression(PreParserExpression value, int pos) { 834 RewriteAwaitExpression(PreParserExpression value, int pos) {
837 return value; 835 return value;
838 } 836 }
839 V8_INLINE PreParserExpression RewriteYieldStar(PreParserExpression generator, 837 V8_INLINE PreParserExpression RewriteYieldStar(PreParserExpression generator,
840 PreParserExpression expression, 838 PreParserExpression expression,
841 int pos) { 839 int pos) {
842 return PreParserExpression::Default(); 840 return PreParserExpression::Default();
843 } 841 }
844 V8_INLINE void RewriteNonPattern(ExpressionClassifier* classifier, bool* ok) { 842 V8_INLINE void RewriteNonPattern(bool* ok) { ValidateExpression(ok); }
845 ValidateExpression(classifier, ok);
846 }
847 843
848 V8_INLINE void QueueDestructuringAssignmentForRewriting( 844 V8_INLINE void QueueDestructuringAssignmentForRewriting(
849 PreParserExpression assignment) {} 845 PreParserExpression assignment) {}
850 V8_INLINE void QueueNonPatternForRewriting(PreParserExpression expr, 846 V8_INLINE void QueueNonPatternForRewriting(PreParserExpression expr,
851 bool* ok) {} 847 bool* ok) {}
852 848
853 // Helper functions for recursive descent. 849 // Helper functions for recursive descent.
854 V8_INLINE bool IsEval(PreParserIdentifier identifier) const { 850 V8_INLINE bool IsEval(PreParserIdentifier identifier) const {
855 return identifier.IsEval(); 851 return identifier.IsEval();
856 } 852 }
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 1086
1091 V8_INLINE void AddFormalParameter(PreParserFormalParameters* parameters, 1087 V8_INLINE void AddFormalParameter(PreParserFormalParameters* parameters,
1092 PreParserExpression pattern, 1088 PreParserExpression pattern,
1093 PreParserExpression initializer, 1089 PreParserExpression initializer,
1094 int initializer_end_position, 1090 int initializer_end_position,
1095 bool is_rest) { 1091 bool is_rest) {
1096 ++parameters->arity; 1092 ++parameters->arity;
1097 } 1093 }
1098 1094
1099 V8_INLINE void DeclareFormalParameter(DeclarationScope* scope, 1095 V8_INLINE void DeclareFormalParameter(DeclarationScope* scope,
1100 PreParserIdentifier parameter, 1096 PreParserIdentifier parameter) {
1101 ExpressionClassifier* classifier) { 1097 if (!classifier()->is_simple_parameter_list()) {
1102 if (!classifier->is_simple_parameter_list()) {
1103 scope->SetHasNonSimpleParameters(); 1098 scope->SetHasNonSimpleParameters();
1104 } 1099 }
1105 } 1100 }
1106 1101
1107 V8_INLINE void ParseArrowFunctionFormalParameterList( 1102 V8_INLINE void ParseArrowFunctionFormalParameterList(
1108 PreParserFormalParameters* parameters, PreParserExpression params, 1103 PreParserFormalParameters* parameters, PreParserExpression params,
1109 const Scanner::Location& params_loc, Scanner::Location* duplicate_loc, 1104 const Scanner::Location& params_loc, Scanner::Location* duplicate_loc,
1110 const Scope::Snapshot& scope_snapshot, bool* ok) { 1105 const Scope::Snapshot& scope_snapshot, bool* ok) {
1111 // TODO(wingo): Detect duplicated identifiers in paramlists. Detect 1106 // TODO(wingo): Detect duplicated identifiers in paramlists. Detect
1112 // parameter 1107 // parameter
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 function_state_->NextMaterializedLiteralIndex(); 1188 function_state_->NextMaterializedLiteralIndex();
1194 function_state_->NextMaterializedLiteralIndex(); 1189 function_state_->NextMaterializedLiteralIndex();
1195 } 1190 }
1196 return EmptyExpression(); 1191 return EmptyExpression();
1197 } 1192 }
1198 1193
1199 } // namespace internal 1194 } // namespace internal
1200 } // namespace v8 1195 } // namespace v8
1201 1196
1202 #endif // V8_PARSING_PREPARSER_H 1197 #endif // V8_PARSING_PREPARSER_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698