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

Side by Side Diff: src/parser.cc

Issue 1007783002: Remove --harmony-scoping flag. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: CR feedback Created 5 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
« no previous file with comments | « src/objects.cc ('k') | src/ppc/full-codegen-ppc.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 #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/bailout-reason.h" 9 #include "src/bailout-reason.h"
10 #include "src/base/platform/platform.h" 10 #include "src/base/platform/platform.h"
(...skipping 852 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 parsing_lazy_arrow_parameters_(false), 863 parsing_lazy_arrow_parameters_(false),
864 total_preparse_skipped_(0), 864 total_preparse_skipped_(0),
865 pre_parse_timer_(NULL), 865 pre_parse_timer_(NULL),
866 parsing_on_main_thread_(true) { 866 parsing_on_main_thread_(true) {
867 // Even though we were passed ParseInfo, we should not store it in 867 // Even though we were passed ParseInfo, we should not store it in
868 // Parser - this makes sure that Isolate is not accidentally accessed via 868 // Parser - this makes sure that Isolate is not accidentally accessed via
869 // ParseInfo during background parsing. 869 // ParseInfo during background parsing.
870 DCHECK(!info->script().is_null() || info->source_stream() != NULL); 870 DCHECK(!info->script().is_null() || info->source_stream() != NULL);
871 set_allow_lazy(info->allow_lazy_parsing()); 871 set_allow_lazy(info->allow_lazy_parsing());
872 set_allow_natives(FLAG_allow_natives_syntax || info->is_native()); 872 set_allow_natives(FLAG_allow_natives_syntax || info->is_native());
873 set_allow_harmony_scoping(!info->is_native() && FLAG_harmony_scoping);
874 set_allow_harmony_modules(!info->is_native() && FLAG_harmony_modules); 873 set_allow_harmony_modules(!info->is_native() && FLAG_harmony_modules);
875 set_allow_harmony_arrow_functions(FLAG_harmony_arrow_functions); 874 set_allow_harmony_arrow_functions(FLAG_harmony_arrow_functions);
876 set_allow_harmony_numeric_literals(FLAG_harmony_numeric_literals); 875 set_allow_harmony_numeric_literals(FLAG_harmony_numeric_literals);
877 set_allow_harmony_classes(FLAG_harmony_classes); 876 set_allow_harmony_classes(FLAG_harmony_classes);
878 set_allow_harmony_object_literals(FLAG_harmony_object_literals); 877 set_allow_harmony_object_literals(FLAG_harmony_object_literals);
879 set_allow_harmony_templates(FLAG_harmony_templates); 878 set_allow_harmony_templates(FLAG_harmony_templates);
880 set_allow_harmony_sloppy(FLAG_harmony_sloppy); 879 set_allow_harmony_sloppy(FLAG_harmony_sloppy);
881 set_allow_harmony_unicode(FLAG_harmony_unicode); 880 set_allow_harmony_unicode(FLAG_harmony_unicode);
882 set_allow_harmony_computed_property_names( 881 set_allow_harmony_computed_property_names(
883 FLAG_harmony_computed_property_names); 882 FLAG_harmony_computed_property_names);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 int beg_pos = scanner()->location().beg_pos; 1018 int beg_pos = scanner()->location().beg_pos;
1020 if (info->is_module()) { 1019 if (info->is_module()) {
1021 DCHECK(allow_harmony_modules()); 1020 DCHECK(allow_harmony_modules());
1022 ParseModuleItemList(body, &ok); 1021 ParseModuleItemList(body, &ok);
1023 } else { 1022 } else {
1024 ParseStatementList(body, Token::EOS, info->is_eval(), eval_scope, &ok); 1023 ParseStatementList(body, Token::EOS, info->is_eval(), eval_scope, &ok);
1025 } 1024 }
1026 1025
1027 if (ok && is_strict(language_mode())) { 1026 if (ok && is_strict(language_mode())) {
1028 CheckStrictOctalLiteral(beg_pos, scanner()->location().end_pos, &ok); 1027 CheckStrictOctalLiteral(beg_pos, scanner()->location().end_pos, &ok);
1029 }
1030
1031 if (ok && allow_harmony_scoping() && is_strict(language_mode())) {
1032 CheckConflictingVarDeclarations(scope_, &ok); 1028 CheckConflictingVarDeclarations(scope_, &ok);
1033 } 1029 }
1034 1030
1035 if (ok && info->parse_restriction() == ONLY_SINGLE_FUNCTION_LITERAL) { 1031 if (ok && info->parse_restriction() == ONLY_SINGLE_FUNCTION_LITERAL) {
1036 if (body->length() != 1 || 1032 if (body->length() != 1 ||
1037 !body->at(0)->IsExpressionStatement() || 1033 !body->at(0)->IsExpressionStatement() ||
1038 !body->at(0)->AsExpressionStatement()-> 1034 !body->at(0)->AsExpressionStatement()->
1039 expression()->IsFunctionLiteral()) { 1035 expression()->IsFunctionLiteral()) {
1040 ReportMessage("single_function_literal"); 1036 ReportMessage("single_function_literal");
1041 ok = false; 1037 ok = false;
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1283 1279
1284 switch (peek()) { 1280 switch (peek()) {
1285 case Token::FUNCTION: 1281 case Token::FUNCTION:
1286 return ParseFunctionDeclaration(NULL, ok); 1282 return ParseFunctionDeclaration(NULL, ok);
1287 case Token::CLASS: 1283 case Token::CLASS:
1288 return ParseClassDeclaration(NULL, ok); 1284 return ParseClassDeclaration(NULL, ok);
1289 case Token::CONST: 1285 case Token::CONST:
1290 case Token::VAR: 1286 case Token::VAR:
1291 return ParseVariableStatement(kStatementListItem, NULL, ok); 1287 return ParseVariableStatement(kStatementListItem, NULL, ok);
1292 case Token::LET: 1288 case Token::LET:
1293 DCHECK(allow_harmony_scoping());
1294 if (is_strict(language_mode())) { 1289 if (is_strict(language_mode())) {
1295 return ParseVariableStatement(kStatementListItem, NULL, ok); 1290 return ParseVariableStatement(kStatementListItem, NULL, ok);
1296 } 1291 }
1297 // Fall through. 1292 // Fall through.
1298 default: 1293 default:
1299 return ParseStatement(NULL, ok); 1294 return ParseStatement(NULL, ok);
1300 } 1295 }
1301 } 1296 }
1302 1297
1303 1298
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
1904 // functions. The function CheckConflictingVarDeclarations checks for 1899 // functions. The function CheckConflictingVarDeclarations checks for
1905 // var and let bindings from different scopes whereas this is a check for 1900 // var and let bindings from different scopes whereas this is a check for
1906 // conflicting declarations within the same scope. This check also covers 1901 // conflicting declarations within the same scope. This check also covers
1907 // the special case 1902 // the special case
1908 // 1903 //
1909 // function () { let x; { var x; } } 1904 // function () { let x; { var x; } }
1910 // 1905 //
1911 // because the var declaration is hoisted to the function scope where 'x' 1906 // because the var declaration is hoisted to the function scope where 'x'
1912 // is already bound. 1907 // is already bound.
1913 DCHECK(IsDeclaredVariableMode(var->mode())); 1908 DCHECK(IsDeclaredVariableMode(var->mode()));
1914 if (allow_harmony_scoping() && is_strict(language_mode())) { 1909 if (is_strict(language_mode())) {
1915 // In harmony we treat re-declarations as early errors. See 1910 // In harmony we treat re-declarations as early errors. See
1916 // ES5 16 for a definition of early errors. 1911 // ES5 16 for a definition of early errors.
1917 ParserTraits::ReportMessage("var_redeclaration", name); 1912 ParserTraits::ReportMessage("var_redeclaration", name);
1918 *ok = false; 1913 *ok = false;
1919 return nullptr; 1914 return nullptr;
1920 } 1915 }
1921 Expression* expression = NewThrowTypeError( 1916 Expression* expression = NewThrowTypeError(
1922 "var_redeclaration", name, declaration->position()); 1917 "var_redeclaration", name, declaration->position());
1923 declaration_scope->SetIllegalRedeclaration(expression); 1918 declaration_scope->SetIllegalRedeclaration(expression);
1924 } else if (mode == VAR) { 1919 } else if (mode == VAR) {
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
2055 is_generator ? FunctionKind::kGeneratorFunction 2050 is_generator ? FunctionKind::kGeneratorFunction
2056 : FunctionKind::kNormalFunction, 2051 : FunctionKind::kNormalFunction,
2057 pos, FunctionLiteral::DECLARATION, 2052 pos, FunctionLiteral::DECLARATION,
2058 FunctionLiteral::NORMAL_ARITY, CHECK_OK); 2053 FunctionLiteral::NORMAL_ARITY, CHECK_OK);
2059 // Even if we're not at the top-level of the global or a function 2054 // Even if we're not at the top-level of the global or a function
2060 // scope, we treat it as such and introduce the function with its 2055 // scope, we treat it as such and introduce the function with its
2061 // initial value upon entering the corresponding scope. 2056 // initial value upon entering the corresponding scope.
2062 // In ES6, a function behaves as a lexical binding, except in 2057 // In ES6, a function behaves as a lexical binding, except in
2063 // a script scope, or the initial scope of eval or another function. 2058 // a script scope, or the initial scope of eval or another function.
2064 VariableMode mode = 2059 VariableMode mode =
2065 is_strong(language_mode()) ? CONST : 2060 is_strong(language_mode())
2066 allow_harmony_scoping() && is_strict(language_mode()) && 2061 ? CONST
2067 !(scope_->is_script_scope() || scope_->is_eval_scope() || 2062 : is_strict(language_mode()) &&
2068 scope_->is_function_scope()) 2063 !(scope_->is_script_scope() || scope_->is_eval_scope() ||
2069 ? LET 2064 scope_->is_function_scope())
2070 : VAR; 2065 ? LET
2066 : VAR;
2071 VariableProxy* proxy = NewUnresolved(name, mode); 2067 VariableProxy* proxy = NewUnresolved(name, mode);
2072 Declaration* declaration = 2068 Declaration* declaration =
2073 factory()->NewFunctionDeclaration(proxy, mode, fun, scope_, pos); 2069 factory()->NewFunctionDeclaration(proxy, mode, fun, scope_, pos);
2074 Declare(declaration, true, CHECK_OK); 2070 Declare(declaration, true, CHECK_OK);
2075 if (names) names->Add(name, zone()); 2071 if (names) names->Add(name, zone());
2076 return factory()->NewEmptyStatement(RelocInfo::kNoPosition); 2072 return factory()->NewEmptyStatement(RelocInfo::kNoPosition);
2077 } 2073 }
2078 2074
2079 2075
2080 Statement* Parser::ParseClassDeclaration(ZoneList<const AstRawString*>* names, 2076 Statement* Parser::ParseClassDeclaration(ZoneList<const AstRawString*>* names,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2117 is_strong(language_mode()) ? Token::INIT_CONST : Token::INIT_LET; 2113 is_strong(language_mode()) ? Token::INIT_CONST : Token::INIT_LET;
2118 Assignment* assignment = factory()->NewAssignment(init_op, proxy, value, pos); 2114 Assignment* assignment = factory()->NewAssignment(init_op, proxy, value, pos);
2119 Statement* assignment_statement = 2115 Statement* assignment_statement =
2120 factory()->NewExpressionStatement(assignment, RelocInfo::kNoPosition); 2116 factory()->NewExpressionStatement(assignment, RelocInfo::kNoPosition);
2121 if (names) names->Add(name, zone()); 2117 if (names) names->Add(name, zone());
2122 return assignment_statement; 2118 return assignment_statement;
2123 } 2119 }
2124 2120
2125 2121
2126 Block* Parser::ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok) { 2122 Block* Parser::ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok) {
2127 if (allow_harmony_scoping() && is_strict(language_mode())) { 2123 if (is_strict(language_mode())) {
2128 return ParseScopedBlock(labels, ok); 2124 return ParseScopedBlock(labels, ok);
2129 } 2125 }
2130 2126
2131 // Block :: 2127 // Block ::
2132 // '{' Statement* '}' 2128 // '{' Statement* '}'
2133 2129
2134 // Note that a Block does not introduce a new execution scope! 2130 // Note that a Block does not introduce a new execution scope!
2135 // (ECMA-262, 3rd, 12.2) 2131 // (ECMA-262, 3rd, 12.2)
2136 // 2132 //
2137 // Construct block expecting 16 statements. 2133 // Construct block expecting 16 statements.
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
2239 return NULL; 2235 return NULL;
2240 } 2236 }
2241 Consume(Token::VAR); 2237 Consume(Token::VAR);
2242 } else if (peek() == Token::CONST) { 2238 } else if (peek() == Token::CONST) {
2243 Consume(Token::CONST); 2239 Consume(Token::CONST);
2244 if (is_sloppy(language_mode())) { 2240 if (is_sloppy(language_mode())) {
2245 mode = CONST_LEGACY; 2241 mode = CONST_LEGACY;
2246 init_op = Token::INIT_CONST_LEGACY; 2242 init_op = Token::INIT_CONST_LEGACY;
2247 } else { 2243 } else {
2248 DCHECK(var_context != kStatement); 2244 DCHECK(var_context != kStatement);
2249 // In ES5 const is not allowed in strict mode.
2250 if (!allow_harmony_scoping()) {
2251 ReportMessage("strict_const");
2252 *ok = false;
2253 return NULL;
2254 }
2255 mode = CONST; 2245 mode = CONST;
2256 init_op = Token::INIT_CONST; 2246 init_op = Token::INIT_CONST;
2257 } 2247 }
2258 is_const = true; 2248 is_const = true;
2259 needs_init = true; 2249 needs_init = true;
2260 } else if (peek() == Token::LET && is_strict(language_mode())) { 2250 } else if (peek() == Token::LET && is_strict(language_mode())) {
2261 DCHECK(allow_harmony_scoping());
2262 Consume(Token::LET); 2251 Consume(Token::LET);
2263 DCHECK(var_context != kStatement); 2252 DCHECK(var_context != kStatement);
2264 mode = LET; 2253 mode = LET;
2265 needs_init = true; 2254 needs_init = true;
2266 init_op = Token::INIT_LET; 2255 init_op = Token::INIT_LET;
2267 } else { 2256 } else {
2268 UNREACHABLE(); // by current callers 2257 UNREACHABLE(); // by current callers
2269 } 2258 }
2270 2259
2271 Scope* declaration_scope = DeclarationScope(mode); 2260 Scope* declaration_scope = DeclarationScope(mode);
(...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after
3726 // - (1) is the case iff the innermost scope of the deserialized scope chain 3715 // - (1) is the case iff the innermost scope of the deserialized scope chain
3727 // under which we compile is _not_ a declaration scope. This holds because 3716 // under which we compile is _not_ a declaration scope. This holds because
3728 // in all normal cases, function declarations are fully hoisted to a 3717 // in all normal cases, function declarations are fully hoisted to a
3729 // declaration scope and compiled relative to that. 3718 // declaration scope and compiled relative to that.
3730 // - (2) is the case iff the current declaration scope is still the original 3719 // - (2) is the case iff the current declaration scope is still the original
3731 // one relative to the deserialized scope chain. Otherwise we must be 3720 // one relative to the deserialized scope chain. Otherwise we must be
3732 // compiling a function in an inner declaration scope in the eval, e.g. a 3721 // compiling a function in an inner declaration scope in the eval, e.g. a
3733 // nested function, and hoisting works normally relative to that. 3722 // nested function, and hoisting works normally relative to that.
3734 Scope* declaration_scope = scope_->DeclarationScope(); 3723 Scope* declaration_scope = scope_->DeclarationScope();
3735 Scope* original_declaration_scope = original_scope_->DeclarationScope(); 3724 Scope* original_declaration_scope = original_scope_->DeclarationScope();
3736 Scope* scope = 3725 Scope* scope = function_type == FunctionLiteral::DECLARATION &&
3737 function_type == FunctionLiteral::DECLARATION && 3726 is_sloppy(language_mode()) &&
3738 (!allow_harmony_scoping() || is_sloppy(language_mode())) && 3727 (original_scope_ == original_declaration_scope ||
3739 (original_scope_ == original_declaration_scope || 3728 declaration_scope != original_declaration_scope)
3740 declaration_scope != original_declaration_scope) 3729 ? NewScope(declaration_scope, FUNCTION_SCOPE, kind)
3741 ? NewScope(declaration_scope, FUNCTION_SCOPE, kind) 3730 : NewScope(scope_, FUNCTION_SCOPE, kind);
3742 : NewScope(scope_, FUNCTION_SCOPE, kind);
3743 ZoneList<Statement*>* body = NULL; 3731 ZoneList<Statement*>* body = NULL;
3744 int materialized_literal_count = -1; 3732 int materialized_literal_count = -1;
3745 int expected_property_count = -1; 3733 int expected_property_count = -1;
3746 int handler_count = 0; 3734 int handler_count = 0;
3747 FunctionLiteral::ParameterFlag duplicate_parameters = 3735 FunctionLiteral::ParameterFlag duplicate_parameters =
3748 FunctionLiteral::kNoDuplicateParameters; 3736 FunctionLiteral::kNoDuplicateParameters;
3749 FunctionLiteral::IsParenthesizedFlag parenthesized = parenthesized_function_ 3737 FunctionLiteral::IsParenthesizedFlag parenthesized = parenthesized_function_
3750 ? FunctionLiteral::kIsParenthesized 3738 ? FunctionLiteral::kIsParenthesized
3751 : FunctionLiteral::kNotParenthesized; 3739 : FunctionLiteral::kNotParenthesized;
3752 // Parse function body. 3740 // Parse function body.
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
3840 3828
3841 // If we have a named function expression, we add a local variable 3829 // If we have a named function expression, we add a local variable
3842 // declaration to the body of the function with the name of the 3830 // declaration to the body of the function with the name of the
3843 // function and let it refer to the function itself (closure). 3831 // function and let it refer to the function itself (closure).
3844 // NOTE: We create a proxy and resolve it here so that in the 3832 // NOTE: We create a proxy and resolve it here so that in the
3845 // future we can change the AST to only refer to VariableProxies 3833 // future we can change the AST to only refer to VariableProxies
3846 // instead of Variables and Proxis as is the case now. 3834 // instead of Variables and Proxis as is the case now.
3847 Variable* fvar = NULL; 3835 Variable* fvar = NULL;
3848 Token::Value fvar_init_op = Token::INIT_CONST_LEGACY; 3836 Token::Value fvar_init_op = Token::INIT_CONST_LEGACY;
3849 if (function_type == FunctionLiteral::NAMED_EXPRESSION) { 3837 if (function_type == FunctionLiteral::NAMED_EXPRESSION) {
3850 if (allow_harmony_scoping() && is_strict(language_mode())) { 3838 if (is_strict(language_mode())) {
3851 fvar_init_op = Token::INIT_CONST; 3839 fvar_init_op = Token::INIT_CONST;
3852 } 3840 }
3853 VariableMode fvar_mode = 3841 VariableMode fvar_mode =
3854 allow_harmony_scoping() && is_strict(language_mode()) ? CONST 3842 is_strict(language_mode()) ? CONST : CONST_LEGACY;
3855 : CONST_LEGACY;
3856 DCHECK(function_name != NULL); 3843 DCHECK(function_name != NULL);
3857 fvar = new (zone()) 3844 fvar = new (zone())
3858 Variable(scope_, function_name, fvar_mode, true /* is valid LHS */, 3845 Variable(scope_, function_name, fvar_mode, true /* is valid LHS */,
3859 Variable::NORMAL, kCreatedInitialized, kNotAssigned); 3846 Variable::NORMAL, kCreatedInitialized, kNotAssigned);
3860 VariableProxy* proxy = factory()->NewVariableProxy(fvar); 3847 VariableProxy* proxy = factory()->NewVariableProxy(fvar);
3861 VariableDeclaration* fvar_declaration = factory()->NewVariableDeclaration( 3848 VariableDeclaration* fvar_declaration = factory()->NewVariableDeclaration(
3862 proxy, fvar_mode, scope_, RelocInfo::kNoPosition); 3849 proxy, fvar_mode, scope_, RelocInfo::kNoPosition);
3863 scope_->DeclareFunctionVar(fvar_declaration); 3850 scope_->DeclareFunctionVar(fvar_declaration);
3864 } 3851 }
3865 3852
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
3919 CHECK_OK); 3906 CHECK_OK);
3920 const bool use_strict_params = is_rest || IsConciseMethod(kind); 3907 const bool use_strict_params = is_rest || IsConciseMethod(kind);
3921 CheckFunctionParameterNames(language_mode(), use_strict_params, 3908 CheckFunctionParameterNames(language_mode(), use_strict_params,
3922 eval_args_error_loc, dupe_error_loc, 3909 eval_args_error_loc, dupe_error_loc,
3923 reserved_error_loc, CHECK_OK); 3910 reserved_error_loc, CHECK_OK);
3924 3911
3925 if (is_strict(language_mode())) { 3912 if (is_strict(language_mode())) {
3926 CheckStrictOctalLiteral(scope->start_position(), scope->end_position(), 3913 CheckStrictOctalLiteral(scope->start_position(), scope->end_position(),
3927 CHECK_OK); 3914 CHECK_OK);
3928 } 3915 }
3929 if (allow_harmony_scoping() && is_strict(language_mode())) { 3916 if (is_strict(language_mode())) {
3930 CheckConflictingVarDeclarations(scope, CHECK_OK); 3917 CheckConflictingVarDeclarations(scope, CHECK_OK);
3931 } 3918 }
3932 } 3919 }
3933 3920
3934 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( 3921 FunctionLiteral* function_literal = factory()->NewFunctionLiteral(
3935 function_name, ast_value_factory(), scope, body, 3922 function_name, ast_value_factory(), scope, body,
3936 materialized_literal_count, expected_property_count, handler_count, 3923 materialized_literal_count, expected_property_count, handler_count,
3937 num_parameters, duplicate_parameters, function_type, 3924 num_parameters, duplicate_parameters, function_type,
3938 FunctionLiteral::kIsFunction, parenthesized, kind, pos); 3925 FunctionLiteral::kIsFunction, parenthesized, kind, pos);
3939 function_literal->set_function_token_position(function_token_pos); 3926 function_literal->set_function_token_position(function_token_pos);
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
4119 if (pre_parse_timer_ != NULL) { 4106 if (pre_parse_timer_ != NULL) {
4120 pre_parse_timer_->Start(); 4107 pre_parse_timer_->Start();
4121 } 4108 }
4122 DCHECK_EQ(Token::LBRACE, scanner()->current_token()); 4109 DCHECK_EQ(Token::LBRACE, scanner()->current_token());
4123 4110
4124 if (reusable_preparser_ == NULL) { 4111 if (reusable_preparser_ == NULL) {
4125 reusable_preparser_ = new PreParser(zone(), &scanner_, ast_value_factory(), 4112 reusable_preparser_ = new PreParser(zone(), &scanner_, ast_value_factory(),
4126 NULL, stack_limit_); 4113 NULL, stack_limit_);
4127 reusable_preparser_->set_allow_lazy(true); 4114 reusable_preparser_->set_allow_lazy(true);
4128 reusable_preparser_->set_allow_natives(allow_natives()); 4115 reusable_preparser_->set_allow_natives(allow_natives());
4129 reusable_preparser_->set_allow_harmony_scoping(allow_harmony_scoping());
4130 reusable_preparser_->set_allow_harmony_modules(allow_harmony_modules()); 4116 reusable_preparser_->set_allow_harmony_modules(allow_harmony_modules());
4131 reusable_preparser_->set_allow_harmony_arrow_functions( 4117 reusable_preparser_->set_allow_harmony_arrow_functions(
4132 allow_harmony_arrow_functions()); 4118 allow_harmony_arrow_functions());
4133 reusable_preparser_->set_allow_harmony_numeric_literals( 4119 reusable_preparser_->set_allow_harmony_numeric_literals(
4134 allow_harmony_numeric_literals()); 4120 allow_harmony_numeric_literals());
4135 reusable_preparser_->set_allow_harmony_classes(allow_harmony_classes()); 4121 reusable_preparser_->set_allow_harmony_classes(allow_harmony_classes());
4136 reusable_preparser_->set_allow_harmony_object_literals( 4122 reusable_preparser_->set_allow_harmony_object_literals(
4137 allow_harmony_object_literals()); 4123 allow_harmony_object_literals());
4138 reusable_preparser_->set_allow_harmony_templates(allow_harmony_templates()); 4124 reusable_preparser_->set_allow_harmony_templates(allow_harmony_templates());
4139 reusable_preparser_->set_allow_harmony_sloppy(allow_harmony_sloppy()); 4125 reusable_preparser_->set_allow_harmony_sloppy(allow_harmony_sloppy());
(...skipping 1382 matching lines...) Expand 10 before | Expand all | Expand 10 after
5522 } else { 5508 } else {
5523 const uc16* data = reinterpret_cast<const uc16*>(raw_string->raw_data()); 5509 const uc16* data = reinterpret_cast<const uc16*>(raw_string->raw_data());
5524 running_hash = StringHasher::ComputeRunningHash(running_hash, data, 5510 running_hash = StringHasher::ComputeRunningHash(running_hash, data,
5525 raw_string->length()); 5511 raw_string->length());
5526 } 5512 }
5527 } 5513 }
5528 5514
5529 return running_hash; 5515 return running_hash;
5530 } 5516 }
5531 } } // namespace v8::internal 5517 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/objects.cc ('k') | src/ppc/full-codegen-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698