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

Side by Side Diff: src/preparser.h

Issue 216883003: Make it clearer that PreParser doesn't depend on Isolate. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « src/parser.h ('k') | no next file » | 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 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 bool is_generator_; 221 bool is_generator_;
222 // For generators, this variable may hold the generator object. It variable 222 // For generators, this variable may hold the generator object. It variable
223 // is used by yield expressions and return statements. It is not necessary 223 // is used by yield expressions and return statements. It is not necessary
224 // for generator functions to have this variable set. 224 // for generator functions to have this variable set.
225 Variable* generator_object_variable_; 225 Variable* generator_object_variable_;
226 226
227 FunctionState** function_state_stack_; 227 FunctionState** function_state_stack_;
228 FunctionState* outer_function_state_; 228 FunctionState* outer_function_state_;
229 typename Traits::Type::Scope** scope_stack_; 229 typename Traits::Type::Scope** scope_stack_;
230 typename Traits::Type::Scope* outer_scope_; 230 typename Traits::Type::Scope* outer_scope_;
231 Isolate* isolate_; // Only used by ParserTraits.
232 int saved_ast_node_id_; // Only used by ParserTraits. 231 int saved_ast_node_id_; // Only used by ParserTraits.
232 typename Traits::Type::Zone* extra_param_;
233 typename Traits::Type::Factory factory_; 233 typename Traits::Type::Factory factory_;
234 234
235 friend class ParserTraits; 235 friend class ParserTraits;
236 }; 236 };
237 237
238 class ParsingModeScope BASE_EMBEDDED { 238 class ParsingModeScope BASE_EMBEDDED {
239 public: 239 public:
240 ParsingModeScope(ParserBase* parser, Mode mode) 240 ParsingModeScope(ParserBase* parser, Mode mode)
241 : parser_(parser), 241 : parser_(parser),
242 old_mode_(parser->mode()) { 242 old_mode_(parser->mode()) {
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 typedef PreParserFactory Factory; 822 typedef PreParserFactory Factory;
823 }; 823 };
824 824
825 explicit PreParserTraits(PreParser* pre_parser) : pre_parser_(pre_parser) {} 825 explicit PreParserTraits(PreParser* pre_parser) : pre_parser_(pre_parser) {}
826 826
827 // Custom operations executed when FunctionStates are created and 827 // Custom operations executed when FunctionStates are created and
828 // destructed. (The PreParser doesn't need to do anything.) 828 // destructed. (The PreParser doesn't need to do anything.)
829 template<typename FunctionState> 829 template<typename FunctionState>
830 static void SetUpFunctionState(FunctionState* function_state, void*) {} 830 static void SetUpFunctionState(FunctionState* function_state, void*) {}
831 template<typename FunctionState> 831 template<typename FunctionState>
832 static void TearDownFunctionState(FunctionState* function_state) {} 832 static void TearDownFunctionState(FunctionState* function_state, void*) {}
833 833
834 // Helper functions for recursive descent. 834 // Helper functions for recursive descent.
835 static bool IsEvalOrArguments(PreParserIdentifier identifier) { 835 static bool IsEvalOrArguments(PreParserIdentifier identifier) {
836 return identifier.IsEvalOrArguments(); 836 return identifier.IsEvalOrArguments();
837 } 837 }
838 838
839 // Returns true if the expression is of type "this.foo". 839 // Returns true if the expression is of type "this.foo".
840 static bool IsThisProperty(PreParserExpression expression) { 840 static bool IsThisProperty(PreParserExpression expression) {
841 return expression.IsThisProperty(); 841 return expression.IsThisProperty();
842 } 842 }
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 typename Traits::Type::Zone* extra_param) 1174 typename Traits::Type::Zone* extra_param)
1175 : next_materialized_literal_index_(JSFunction::kLiteralsPrefixSize), 1175 : next_materialized_literal_index_(JSFunction::kLiteralsPrefixSize),
1176 next_handler_index_(0), 1176 next_handler_index_(0),
1177 expected_property_count_(0), 1177 expected_property_count_(0),
1178 is_generator_(false), 1178 is_generator_(false),
1179 generator_object_variable_(NULL), 1179 generator_object_variable_(NULL),
1180 function_state_stack_(function_state_stack), 1180 function_state_stack_(function_state_stack),
1181 outer_function_state_(*function_state_stack), 1181 outer_function_state_(*function_state_stack),
1182 scope_stack_(scope_stack), 1182 scope_stack_(scope_stack),
1183 outer_scope_(*scope_stack), 1183 outer_scope_(*scope_stack),
1184 isolate_(NULL),
1185 saved_ast_node_id_(0), 1184 saved_ast_node_id_(0),
1185 extra_param_(extra_param),
1186 factory_(extra_param) { 1186 factory_(extra_param) {
1187 *scope_stack_ = scope; 1187 *scope_stack_ = scope;
1188 *function_state_stack = this; 1188 *function_state_stack = this;
1189 Traits::SetUpFunctionState(this, extra_param); 1189 Traits::SetUpFunctionState(this, extra_param);
1190 } 1190 }
1191 1191
1192 1192
1193 template<class Traits> 1193 template<class Traits>
1194 ParserBase<Traits>::FunctionState::~FunctionState() { 1194 ParserBase<Traits>::FunctionState::~FunctionState() {
1195 *scope_stack_ = outer_scope_; 1195 *scope_stack_ = outer_scope_;
1196 *function_state_stack_ = outer_function_state_; 1196 *function_state_stack_ = outer_function_state_;
1197 Traits::TearDownFunctionState(this); 1197 Traits::TearDownFunctionState(this, extra_param_);
1198 } 1198 }
1199 1199
1200 1200
1201 template<class Traits> 1201 template<class Traits>
1202 void ParserBase<Traits>::ReportUnexpectedToken(Token::Value token) { 1202 void ParserBase<Traits>::ReportUnexpectedToken(Token::Value token) {
1203 Scanner::Location source_location = scanner()->location(); 1203 Scanner::Location source_location = scanner()->location();
1204 1204
1205 // Four of the tokens are treated specially 1205 // Four of the tokens are treated specially
1206 switch (token) { 1206 switch (token) {
1207 case Token::EOS: 1207 case Token::EOS:
(...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after
2150 "accessor_get_set"); 2150 "accessor_get_set");
2151 } 2151 }
2152 *ok = false; 2152 *ok = false;
2153 } 2153 }
2154 } 2154 }
2155 2155
2156 2156
2157 } } // v8::internal 2157 } } // v8::internal
2158 2158
2159 #endif // V8_PREPARSER_H 2159 #endif // V8_PREPARSER_H
OLDNEW
« no previous file with comments | « src/parser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698