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

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

Issue 2414003002: Move function length tracking from Scope to (Pre)?ParserFormalParameters. (Closed)
Patch Set: oops cont Created 4 years, 2 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 | « src/objects.cc ('k') | src/parsing/parser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 bool is_rest; 127 bool is_rest;
128 bool is_simple() const { 128 bool is_simple() const {
129 return pattern->IsVariableProxy() && initializer == nullptr && !is_rest; 129 return pattern->IsVariableProxy() && initializer == nullptr && !is_rest;
130 } 130 }
131 }; 131 };
132 132
133 explicit ParserFormalParameters(DeclarationScope* scope) 133 explicit ParserFormalParameters(DeclarationScope* scope)
134 : FormalParametersBase(scope), params(4, scope->zone()) {} 134 : FormalParametersBase(scope), params(4, scope->zone()) {}
135 ZoneList<Parameter> params; 135 ZoneList<Parameter> params;
136 136
137 int Arity() const { return params.length(); }
138 const Parameter& at(int i) const { return params[i]; } 137 const Parameter& at(int i) const { return params[i]; }
139 }; 138 };
140 139
141 template <> 140 template <>
142 struct ParserTypes<Parser> { 141 struct ParserTypes<Parser> {
143 typedef ParserBase<Parser> Base; 142 typedef ParserBase<Parser> Base;
144 typedef Parser Impl; 143 typedef Parser Impl;
145 144
146 typedef v8::internal::Variable Variable; 145 typedef v8::internal::Variable Variable;
147 146
(...skipping 839 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 if (!*ok) return; 986 if (!*ok) return;
988 } 987 }
989 if (init_block != nullptr) body->Add(init_block, zone()); 988 if (init_block != nullptr) body->Add(init_block, zone());
990 } 989 }
991 990
992 V8_INLINE void AddFormalParameter(ParserFormalParameters* parameters, 991 V8_INLINE void AddFormalParameter(ParserFormalParameters* parameters,
993 Expression* pattern, 992 Expression* pattern,
994 Expression* initializer, 993 Expression* initializer,
995 int initializer_end_position, 994 int initializer_end_position,
996 bool is_rest) { 995 bool is_rest) {
996 parameters->UpdateArityAndFunctionLength(initializer != nullptr, is_rest);
997 bool is_simple = pattern->IsVariableProxy() && initializer == nullptr; 997 bool is_simple = pattern->IsVariableProxy() && initializer == nullptr;
998 const AstRawString* name = is_simple 998 const AstRawString* name = is_simple
999 ? pattern->AsVariableProxy()->raw_name() 999 ? pattern->AsVariableProxy()->raw_name()
1000 : ast_value_factory()->empty_string(); 1000 : ast_value_factory()->empty_string();
1001 parameters->params.Add( 1001 parameters->params.Add(
1002 ParserFormalParameters::Parameter(name, pattern, initializer, 1002 ParserFormalParameters::Parameter(name, pattern, initializer,
1003 initializer_end_position, is_rest), 1003 initializer_end_position, is_rest),
1004 parameters->scope->zone()); 1004 parameters->scope->zone());
1005 } 1005 }
1006 1006
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 int total_preparse_skipped_; 1092 int total_preparse_skipped_;
1093 HistogramTimer* pre_parse_timer_; 1093 HistogramTimer* pre_parse_timer_;
1094 1094
1095 bool parsing_on_main_thread_; 1095 bool parsing_on_main_thread_;
1096 }; 1096 };
1097 1097
1098 } // namespace internal 1098 } // namespace internal
1099 } // namespace v8 1099 } // namespace v8
1100 1100
1101 #endif // V8_PARSING_PARSER_H_ 1101 #endif // V8_PARSING_PARSER_H_
OLDNEW
« no previous file with comments | « src/objects.cc ('k') | src/parsing/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698