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

Side by Side Diff: src/parser.cc

Issue 573963003: Enable ES6 generators (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/flag-definitions.h ('k') | src/preparser.h » ('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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/api.h" 7 #include "src/api.h"
8 #include "src/ast.h" 8 #include "src/ast.h"
9 #include "src/base/platform/platform.h" 9 #include "src/base/platform/platform.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 pending_error_message_(NULL), 748 pending_error_message_(NULL),
749 pending_error_arg_(NULL), 749 pending_error_arg_(NULL),
750 pending_error_char_arg_(NULL), 750 pending_error_char_arg_(NULL),
751 total_preparse_skipped_(0), 751 total_preparse_skipped_(0),
752 pre_parse_timer_(NULL) { 752 pre_parse_timer_(NULL) {
753 DCHECK(!script().is_null() || info->source_stream() != NULL); 753 DCHECK(!script().is_null() || info->source_stream() != NULL);
754 set_allow_harmony_scoping(!info->is_native() && FLAG_harmony_scoping); 754 set_allow_harmony_scoping(!info->is_native() && FLAG_harmony_scoping);
755 set_allow_modules(!info->is_native() && FLAG_harmony_modules); 755 set_allow_modules(!info->is_native() && FLAG_harmony_modules);
756 set_allow_natives_syntax(FLAG_allow_natives_syntax || info->is_native()); 756 set_allow_natives_syntax(FLAG_allow_natives_syntax || info->is_native());
757 set_allow_lazy(false); // Must be explicitly enabled. 757 set_allow_lazy(false); // Must be explicitly enabled.
758 set_allow_generators(FLAG_harmony_generators);
759 set_allow_arrow_functions(FLAG_harmony_arrow_functions); 758 set_allow_arrow_functions(FLAG_harmony_arrow_functions);
760 set_allow_harmony_numeric_literals(FLAG_harmony_numeric_literals); 759 set_allow_harmony_numeric_literals(FLAG_harmony_numeric_literals);
761 set_allow_classes(FLAG_harmony_classes); 760 set_allow_classes(FLAG_harmony_classes);
762 set_allow_harmony_object_literals(FLAG_harmony_object_literals); 761 set_allow_harmony_object_literals(FLAG_harmony_object_literals);
763 for (int feature = 0; feature < v8::Isolate::kUseCounterFeatureCount; 762 for (int feature = 0; feature < v8::Isolate::kUseCounterFeatureCount;
764 ++feature) { 763 ++feature) {
765 use_counts_[feature] = 0; 764 use_counts_[feature] = 0;
766 } 765 }
767 if (info->ast_value_factory() == NULL) { 766 if (info->ast_value_factory() == NULL) {
768 // info takes ownership of AstValueFactory. 767 // info takes ownership of AstValueFactory.
(...skipping 1117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 1885
1887 Statement* Parser::ParseFunctionDeclaration( 1886 Statement* Parser::ParseFunctionDeclaration(
1888 ZoneList<const AstRawString*>* names, bool* ok) { 1887 ZoneList<const AstRawString*>* names, bool* ok) {
1889 // FunctionDeclaration :: 1888 // FunctionDeclaration ::
1890 // 'function' Identifier '(' FormalParameterListopt ')' '{' FunctionBody '}' 1889 // 'function' Identifier '(' FormalParameterListopt ')' '{' FunctionBody '}'
1891 // GeneratorDeclaration :: 1890 // GeneratorDeclaration ::
1892 // 'function' '*' Identifier '(' FormalParameterListopt ')' 1891 // 'function' '*' Identifier '(' FormalParameterListopt ')'
1893 // '{' FunctionBody '}' 1892 // '{' FunctionBody '}'
1894 Expect(Token::FUNCTION, CHECK_OK); 1893 Expect(Token::FUNCTION, CHECK_OK);
1895 int pos = position(); 1894 int pos = position();
1896 bool is_generator = allow_generators() && Check(Token::MUL); 1895 bool is_generator = Check(Token::MUL);
1897 bool is_strict_reserved = false; 1896 bool is_strict_reserved = false;
1898 const AstRawString* name = ParseIdentifierOrStrictReservedWord( 1897 const AstRawString* name = ParseIdentifierOrStrictReservedWord(
1899 &is_strict_reserved, CHECK_OK); 1898 &is_strict_reserved, CHECK_OK);
1900 FunctionLiteral* fun = 1899 FunctionLiteral* fun =
1901 ParseFunctionLiteral(name, scanner()->location(), is_strict_reserved, 1900 ParseFunctionLiteral(name, scanner()->location(), is_strict_reserved,
1902 is_generator ? FunctionKind::kGeneratorFunction 1901 is_generator ? FunctionKind::kGeneratorFunction
1903 : FunctionKind::kNormalFunction, 1902 : FunctionKind::kNormalFunction,
1904 pos, FunctionLiteral::DECLARATION, 1903 pos, FunctionLiteral::DECLARATION,
1905 FunctionLiteral::NORMAL_ARITY, CHECK_OK); 1904 FunctionLiteral::NORMAL_ARITY, CHECK_OK);
1906 // Even if we're not at the top-level of the global or a function 1905 // Even if we're not at the top-level of the global or a function
(...skipping 1853 matching lines...) Expand 10 before | Expand all | Expand 10 after
3760 pre_parse_timer_->Start(); 3759 pre_parse_timer_->Start();
3761 } 3760 }
3762 DCHECK_EQ(Token::LBRACE, scanner()->current_token()); 3761 DCHECK_EQ(Token::LBRACE, scanner()->current_token());
3763 3762
3764 if (reusable_preparser_ == NULL) { 3763 if (reusable_preparser_ == NULL) {
3765 reusable_preparser_ = new PreParser(&scanner_, NULL, stack_limit_); 3764 reusable_preparser_ = new PreParser(&scanner_, NULL, stack_limit_);
3766 reusable_preparser_->set_allow_harmony_scoping(allow_harmony_scoping()); 3765 reusable_preparser_->set_allow_harmony_scoping(allow_harmony_scoping());
3767 reusable_preparser_->set_allow_modules(allow_modules()); 3766 reusable_preparser_->set_allow_modules(allow_modules());
3768 reusable_preparser_->set_allow_natives_syntax(allow_natives_syntax()); 3767 reusable_preparser_->set_allow_natives_syntax(allow_natives_syntax());
3769 reusable_preparser_->set_allow_lazy(true); 3768 reusable_preparser_->set_allow_lazy(true);
3770 reusable_preparser_->set_allow_generators(allow_generators());
3771 reusable_preparser_->set_allow_arrow_functions(allow_arrow_functions()); 3769 reusable_preparser_->set_allow_arrow_functions(allow_arrow_functions());
3772 reusable_preparser_->set_allow_harmony_numeric_literals( 3770 reusable_preparser_->set_allow_harmony_numeric_literals(
3773 allow_harmony_numeric_literals()); 3771 allow_harmony_numeric_literals());
3774 reusable_preparser_->set_allow_classes(allow_classes()); 3772 reusable_preparser_->set_allow_classes(allow_classes());
3775 reusable_preparser_->set_allow_harmony_object_literals( 3773 reusable_preparser_->set_allow_harmony_object_literals(
3776 allow_harmony_object_literals()); 3774 allow_harmony_object_literals());
3777 } 3775 }
3778 PreParser::PreParseResult result = 3776 PreParser::PreParseResult result =
3779 reusable_preparser_->PreParseLazyFunction(strict_mode(), 3777 reusable_preparser_->PreParseLazyFunction(strict_mode(),
3780 is_generator(), 3778 is_generator(),
(...skipping 1104 matching lines...) Expand 10 before | Expand all | Expand 10 after
4885 4883
4886 // We cannot internalize on a background thread; a foreground task will take 4884 // We cannot internalize on a background thread; a foreground task will take
4887 // care of calling Parser::Internalize just before compilation. 4885 // care of calling Parser::Internalize just before compilation.
4888 4886
4889 if (compile_options() == ScriptCompiler::kProduceParserCache) { 4887 if (compile_options() == ScriptCompiler::kProduceParserCache) {
4890 if (result != NULL) *info_->cached_data() = recorder.GetScriptData(); 4888 if (result != NULL) *info_->cached_data() = recorder.GetScriptData();
4891 log_ = NULL; 4889 log_ = NULL;
4892 } 4890 }
4893 } 4891 }
4894 } } // namespace v8::internal 4892 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/flag-definitions.h ('k') | src/preparser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698