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

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

Issue 2193793002: Put Scopes into temporary Zone (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebased Created 4 years, 4 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/parsing/parser.cc ('k') | test/mjsunit/context-variable-assignments.js » ('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_BASE_H 5 #ifndef V8_PARSING_PARSER_BASE_H
6 #define V8_PARSING_PARSER_BASE_H 6 #define V8_PARSING_PARSER_BASE_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 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 return return_expr_context_; 465 return return_expr_context_;
466 } 466 }
467 void set_return_expr_context(ReturnExprContext context) { 467 void set_return_expr_context(ReturnExprContext context) {
468 return_expr_context_ = context; 468 return_expr_context_ = context;
469 } 469 }
470 470
471 ZoneList<ExpressionT>* non_patterns_to_rewrite() { 471 ZoneList<ExpressionT>* non_patterns_to_rewrite() {
472 return &non_patterns_to_rewrite_; 472 return &non_patterns_to_rewrite_;
473 } 473 }
474 474
475 void next_function_is_parenthesized(bool parenthesized) { 475 bool next_function_is_parenthesized() const {
476 return next_function_is_parenthesized_;
477 }
478
479 void set_next_function_is_parenthesized(bool parenthesized) {
476 next_function_is_parenthesized_ = parenthesized; 480 next_function_is_parenthesized_ = parenthesized;
477 } 481 }
478 482
479 bool this_function_is_parenthesized() const { 483 bool this_function_is_parenthesized() const {
480 return this_function_is_parenthesized_; 484 return this_function_is_parenthesized_;
481 } 485 }
482 486
483 private: 487 private:
484 void AddDestructuringAssignment(DestructuringAssignment pair) { 488 void AddDestructuringAssignment(DestructuringAssignment pair) {
485 destructuring_assignments_to_rewrite_.Add(pair, this->zone()); 489 destructuring_assignments_to_rewrite_.Add(pair, this->zone());
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after
1238 bool allow_lazy_; 1242 bool allow_lazy_;
1239 bool allow_natives_; 1243 bool allow_natives_;
1240 bool allow_tailcalls_; 1244 bool allow_tailcalls_;
1241 bool allow_harmony_restrictive_declarations_; 1245 bool allow_harmony_restrictive_declarations_;
1242 bool allow_harmony_do_expressions_; 1246 bool allow_harmony_do_expressions_;
1243 bool allow_harmony_for_in_; 1247 bool allow_harmony_for_in_;
1244 bool allow_harmony_function_sent_; 1248 bool allow_harmony_function_sent_;
1245 bool allow_harmony_async_await_; 1249 bool allow_harmony_async_await_;
1246 bool allow_harmony_restrictive_generators_; 1250 bool allow_harmony_restrictive_generators_;
1247 bool allow_harmony_trailing_commas_; 1251 bool allow_harmony_trailing_commas_;
1252
1253 friend class DiscardableZoneScope;
1248 }; 1254 };
1249 1255
1250 template <class Traits> 1256 template <class Traits>
1251 ParserBase<Traits>::FunctionState::FunctionState( 1257 ParserBase<Traits>::FunctionState::FunctionState(
1252 FunctionState** function_state_stack, ScopeState** scope_stack, 1258 FunctionState** function_state_stack, ScopeState** scope_stack,
1253 Scope* scope, FunctionKind kind) 1259 Scope* scope, FunctionKind kind)
1254 : ScopeState(scope_stack, scope), 1260 : ScopeState(scope_stack, scope),
1255 next_materialized_literal_index_(0), 1261 next_materialized_literal_index_(0),
1256 expected_property_count_(0), 1262 expected_property_count_(0),
1257 kind_(kind), 1263 kind_(kind),
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
1631 ReportMessageAt(scanner()->peek_location(), 1637 ReportMessageAt(scanner()->peek_location(),
1632 MessageTemplate::kParamAfterRest); 1638 MessageTemplate::kParamAfterRest);
1633 *ok = false; 1639 *ok = false;
1634 return this->EmptyExpression(); 1640 return this->EmptyExpression();
1635 } 1641 }
1636 Expect(Token::RPAREN, CHECK_OK); 1642 Expect(Token::RPAREN, CHECK_OK);
1637 return factory()->NewSpread(expr, ellipsis_pos, expr_pos); 1643 return factory()->NewSpread(expr, ellipsis_pos, expr_pos);
1638 } 1644 }
1639 // Heuristically try to detect immediately called functions before 1645 // Heuristically try to detect immediately called functions before
1640 // seeing the call parentheses. 1646 // seeing the call parentheses.
1641 function_state_->next_function_is_parenthesized(peek() == 1647 function_state_->set_next_function_is_parenthesized(peek() ==
1642 Token::FUNCTION); 1648 Token::FUNCTION);
1643 ExpressionT expr = this->ParseExpression(true, classifier, CHECK_OK); 1649 ExpressionT expr = this->ParseExpression(true, classifier, CHECK_OK);
1644 Expect(Token::RPAREN, CHECK_OK); 1650 Expect(Token::RPAREN, CHECK_OK);
1645 return expr; 1651 return expr;
1646 } 1652 }
1647 1653
1648 case Token::CLASS: { 1654 case Token::CLASS: {
1649 BindingPatternUnexpectedToken(classifier); 1655 BindingPatternUnexpectedToken(classifier);
1650 Consume(Token::CLASS); 1656 Consume(Token::CLASS);
1651 int class_token_position = position(); 1657 int class_token_position = position();
1652 IdentifierT name = this->EmptyIdentifier(); 1658 IdentifierT name = this->EmptyIdentifier();
(...skipping 2024 matching lines...) Expand 10 before | Expand all | Expand 10 after
3677 has_seen_constructor_ = true; 3683 has_seen_constructor_ = true;
3678 return; 3684 return;
3679 } 3685 }
3680 } 3686 }
3681 3687
3682 3688
3683 } // namespace internal 3689 } // namespace internal
3684 } // namespace v8 3690 } // namespace v8
3685 3691
3686 #endif // V8_PARSING_PARSER_BASE_H 3692 #endif // V8_PARSING_PARSER_BASE_H
OLDNEW
« no previous file with comments | « src/parsing/parser.cc ('k') | test/mjsunit/context-variable-assignments.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698