| Index: src/parser.cc | 
| diff --git a/src/parser.cc b/src/parser.cc | 
| index 5ee217ca5c16a12f3142c0219c8cc0e013dbf486..30f65bc44c5b84ffe2e7f5d79ee5b75f99a39086 100644 | 
| --- a/src/parser.cc | 
| +++ b/src/parser.cc | 
| @@ -615,8 +615,9 @@ FunctionLiteral* Parser::DoParseProgram(CompilationInfo* info, | 
| if (pre_data_ != NULL) pre_data_->Initialize(); | 
|  | 
| // Compute the parsing mode. | 
| -  mode_ = (FLAG_lazy && allow_lazy_) ? PARSE_LAZILY : PARSE_EAGERLY; | 
| -  if (allow_natives_syntax_ || extension_ != NULL) mode_ = PARSE_EAGERLY; | 
| +  Mode mode = (FLAG_lazy && allow_lazy_) ? PARSE_LAZILY : PARSE_EAGERLY; | 
| +  if (allow_natives_syntax_ || extension_ != NULL) mode = PARSE_EAGERLY; | 
| +  ParsingModeScope parsing_mode(this, mode); | 
|  | 
| Handle<String> no_name = isolate()->factory()->empty_symbol(); | 
|  | 
| @@ -662,7 +663,8 @@ FunctionLiteral* Parser::DoParseProgram(CompilationInfo* info, | 
| 0, | 
| FunctionLiteral::kNoDuplicateParameters, | 
| FunctionLiteral::ANONYMOUS_EXPRESSION, | 
| -          FunctionLiteral::kGlobalOrEval); | 
| +          FunctionLiteral::kGlobalOrEval, | 
| +          FunctionLiteral::kNotParenthesized); | 
| result->set_ast_properties(factory()->visitor()->ast_properties()); | 
| } else if (stack_overflow_) { | 
| isolate()->StackOverflow(); | 
| @@ -723,7 +725,7 @@ FunctionLiteral* Parser::ParseLazy(Utf16CharacterStream* source, | 
| fni_ = new(zone()) FuncNameInferrer(isolate(), zone()); | 
| fni_->PushEnclosingName(name); | 
|  | 
| -  mode_ = PARSE_EAGERLY; | 
| +  ParsingModeScope parsing_mode(this, PARSE_EAGERLY); | 
|  | 
| // Place holder for the result. | 
| FunctionLiteral* result = NULL; | 
| @@ -4487,6 +4489,9 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> function_name, | 
| Handle<FixedArray> this_property_assignments; | 
| FunctionLiteral::ParameterFlag duplicate_parameters = | 
| FunctionLiteral::kNoDuplicateParameters; | 
| +  FunctionLiteral::IsParenthesizedFlag parenthesized = parenthesized_function_ | 
| +      ? FunctionLiteral::kIsParenthesized | 
| +      : FunctionLiteral::kNotParenthesized; | 
| AstProperties ast_properties; | 
| // Parse function body. | 
| { FunctionState function_state(this, scope, isolate()); | 
| @@ -4635,6 +4640,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> function_name, | 
| } | 
|  | 
| if (!is_lazily_compiled) { | 
| +      ParsingModeScope parsing_mode(this, PARSE_EAGERLY); | 
| body = new(zone()) ZoneList<Statement*>(8, zone()); | 
| if (fvar != NULL) { | 
| VariableProxy* fproxy = top_scope_->NewUnresolved( | 
| @@ -4645,7 +4651,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> function_name, | 
| fproxy, | 
| factory()->NewThisFunction(), | 
| RelocInfo::kNoPosition)), | 
| -                  zone()); | 
| +                                     zone()); | 
| } | 
| ParseSourceElements(body, Token::RBRACE, false, CHECK_OK); | 
|  | 
| @@ -4725,7 +4731,8 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> function_name, | 
| num_parameters, | 
| duplicate_parameters, | 
| type, | 
| -                                    FunctionLiteral::kIsFunction); | 
| +                                    FunctionLiteral::kIsFunction, | 
| +                                    parenthesized); | 
| function_literal->set_function_token_position(function_token_position); | 
| function_literal->set_ast_properties(&ast_properties); | 
|  | 
|  |