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

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

Issue 2413763004: Directly enter the parsing mode in DoParseProgram (Closed)
Patch Set: 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 | « no previous file | 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 // 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 #include "src/parsing/parser.h" 5 #include "src/parsing/parser.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "src/api.h" 9 #include "src/api.h"
10 #include "src/ast/ast-expression-rewriter.h" 10 #include "src/ast/ast-expression-rewriter.h"
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 } 776 }
777 777
778 778
779 FunctionLiteral* Parser::DoParseProgram(ParseInfo* info) { 779 FunctionLiteral* Parser::DoParseProgram(ParseInfo* info) {
780 // Note that this function can be called from the main thread or from a 780 // Note that this function can be called from the main thread or from a
781 // background thread. We should not access anything Isolate / heap dependent 781 // background thread. We should not access anything Isolate / heap dependent
782 // via ParseInfo, and also not pass it forward. 782 // via ParseInfo, and also not pass it forward.
783 DCHECK_NULL(scope_state_); 783 DCHECK_NULL(scope_state_);
784 DCHECK_NULL(target_stack_); 784 DCHECK_NULL(target_stack_);
785 785
786 Mode parsing_mode = allow_lazy() ? PARSE_LAZILY : PARSE_EAGERLY; 786 ParsingModeScope mode(this, allow_lazy() ? PARSE_LAZILY : PARSE_EAGERLY);
787 787
788 FunctionLiteral* result = NULL; 788 FunctionLiteral* result = NULL;
789 { 789 {
790 Scope* outer = original_scope_; 790 Scope* outer = original_scope_;
791 DCHECK_NOT_NULL(outer); 791 DCHECK_NOT_NULL(outer);
792 parsing_module_ = info->is_module(); 792 parsing_module_ = info->is_module();
793 if (info->is_eval()) { 793 if (info->is_eval()) {
794 outer = NewEvalScope(outer); 794 outer = NewEvalScope(outer);
795 } else if (parsing_module_) { 795 } else if (parsing_module_) {
796 DCHECK_EQ(outer, info->script_scope()); 796 DCHECK_EQ(outer, info->script_scope());
797 outer = NewModuleScope(info->script_scope()); 797 outer = NewModuleScope(info->script_scope());
798 } 798 }
799 799
800 DeclarationScope* scope = outer->AsDeclarationScope(); 800 DeclarationScope* scope = outer->AsDeclarationScope();
801 801
802 scope->set_start_position(0); 802 scope->set_start_position(0);
803 803
804 // Enter 'scope' with the given parsing mode.
805 ParsingModeScope parsing_mode_scope(this, parsing_mode);
806 FunctionState function_state(&function_state_, &scope_state_, scope); 804 FunctionState function_state(&function_state_, &scope_state_, scope);
807 805
808 ZoneList<Statement*>* body = new(zone()) ZoneList<Statement*>(16, zone()); 806 ZoneList<Statement*>* body = new(zone()) ZoneList<Statement*>(16, zone());
809 bool ok = true; 807 bool ok = true;
810 int beg_pos = scanner()->location().beg_pos; 808 int beg_pos = scanner()->location().beg_pos;
811 if (parsing_module_) { 809 if (parsing_module_) {
812 // Declare the special module parameter. 810 // Declare the special module parameter.
813 auto name = ast_value_factory()->empty_string(); 811 auto name = ast_value_factory()->empty_string();
814 bool is_duplicate; 812 bool is_duplicate;
815 bool is_rest = false; 813 bool is_rest = false;
(...skipping 4632 matching lines...) Expand 10 before | Expand all | Expand 10 after
5448 5446
5449 return final_loop; 5447 return final_loop;
5450 } 5448 }
5451 5449
5452 #undef CHECK_OK 5450 #undef CHECK_OK
5453 #undef CHECK_OK_VOID 5451 #undef CHECK_OK_VOID
5454 #undef CHECK_FAILED 5452 #undef CHECK_FAILED
5455 5453
5456 } // namespace internal 5454 } // namespace internal
5457 } // namespace v8 5455 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698