| Index: src/parser.cc
 | 
| diff --git a/src/parser.cc b/src/parser.cc
 | 
| index 722ed8beaf470288df7de99157ea58a191ec7c23..b8855fd8f0ac1c0d267a0c2c583ebd52bec9b892 100644
 | 
| --- a/src/parser.cc
 | 
| +++ b/src/parser.cc
 | 
| @@ -4793,9 +4793,11 @@ bool RegExpParser::ParseRegExp(FlatStringReader* input,
 | 
|  
 | 
|  bool Parser::Parse() {
 | 
|    ASSERT(info()->function() == NULL);
 | 
| -  ASSERT(info()->ast_value_factory() == NULL);
 | 
|    FunctionLiteral* result = NULL;
 | 
| -  ast_value_factory_ = new AstValueFactory(zone());
 | 
| +  ast_value_factory_ = info()->ast_value_factory();
 | 
| +  if (ast_value_factory_ == NULL) {
 | 
| +    ast_value_factory_ = new AstValueFactory(zone());
 | 
| +  }
 | 
|    if (allow_natives_syntax() || extension_ != NULL) {
 | 
|      // If intrinsics are allowed, the Parser cannot operate independent of the
 | 
|      // V8 heap because of Rumtime. Tell the string table to internalize strings
 | 
| @@ -4830,7 +4832,9 @@ bool Parser::Parse() {
 | 
|    info()->SetFunction(result);
 | 
|    ast_value_factory_->Internalize(isolate());
 | 
|    // info takes ownership of ast_value_factory_.
 | 
| -  info()->SetAstValueFactory(ast_value_factory_);
 | 
| +  if (info()->ast_value_factory() == NULL) {
 | 
| +    info()->SetAstValueFactory(ast_value_factory_);
 | 
| +  }
 | 
|    ast_value_factory_ = NULL;
 | 
|    return (result != NULL);
 | 
|  }
 | 
| 
 |