Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index ec9832111aa9306ccf124ebc62237cd091fbcf1a..51e79bb14cf1c6519de925d6bb1434e06ccc225f 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -265,8 +265,8 @@ void Parser::SetCachedData() { |
Scope* Parser::NewScope(Scope* parent, ScopeType scope_type) { |
DCHECK(ast_value_factory()); |
- Scope* result = |
- new (zone()) Scope(parent, scope_type, ast_value_factory(), zone()); |
+ Scope* result = new (zone()) |
+ Scope(isolate(), zone(), parent, scope_type, ast_value_factory()); |
result->Initialize(); |
return result; |
} |
@@ -778,8 +778,9 @@ ClassLiteral* ParserTraits::ParseClassLiteral( |
Parser::Parser(CompilationInfo* info, ParseInfo* parse_info) |
- : ParserBase<ParserTraits>(&scanner_, parse_info->stack_limit, |
- info->extension(), NULL, info->zone(), this), |
+ : ParserBase<ParserTraits>(info->isolate(), info->zone(), &scanner_, |
+ parse_info->stack_limit, info->extension(), NULL, |
+ this), |
scanner_(parse_info->unicode_cache), |
reusable_preparser_(NULL), |
original_scope_(NULL), |
@@ -897,7 +898,8 @@ FunctionLiteral* Parser::DoParseProgram(CompilationInfo* info, Scope** scope, |
*scope = NewScope(scope_, SCRIPT_SCOPE); |
info->SetScriptScope(*scope); |
if (!info->context().is_null() && !info->context()->IsNativeContext()) { |
- *scope = Scope::DeserializeScopeChain(*info->context(), *scope, zone()); |
+ *scope = Scope::DeserializeScopeChain(info->isolate(), zone(), |
+ *info->context(), *scope); |
// The Scope is backed up by ScopeInfo (which is in the V8 heap); this |
// means the Parser cannot operate independent of the V8 heap. Tell the |
// string table to internalize strings and values right after they're |
@@ -1031,8 +1033,8 @@ FunctionLiteral* Parser::ParseLazy(Utf16CharacterStream* source) { |
Scope* scope = NewScope(scope_, SCRIPT_SCOPE); |
info()->SetScriptScope(scope); |
if (!info()->closure().is_null()) { |
- scope = Scope::DeserializeScopeChain(info()->closure()->context(), scope, |
- zone()); |
+ scope = Scope::DeserializeScopeChain(isolate(), zone(), |
+ info()->closure()->context(), scope); |
} |
original_scope_ = scope; |
AstNodeFactory function_factory(ast_value_factory()); |
@@ -3941,7 +3943,8 @@ PreParser::PreParseResult Parser::ParseLazyFunctionBodyWithPreParser( |
DCHECK_EQ(Token::LBRACE, scanner()->current_token()); |
if (reusable_preparser_ == NULL) { |
- reusable_preparser_ = new PreParser(&scanner_, NULL, stack_limit_); |
+ reusable_preparser_ = |
+ new PreParser(isolate(), &scanner_, NULL, stack_limit_); |
reusable_preparser_->set_allow_lazy(true); |
reusable_preparser_->set_allow_natives(allow_natives()); |
reusable_preparser_->set_allow_harmony_scoping(allow_harmony_scoping()); |
@@ -4250,8 +4253,9 @@ void Parser::Internalize() { |
RegExpParser::RegExpParser(FlatStringReader* in, Handle<String>* error, |
- bool multiline, bool unicode, Zone* zone) |
- : isolate_(zone->isolate()), |
+ bool multiline, bool unicode, Isolate* isolate, |
+ Zone* zone) |
+ : isolate_(isolate), |
zone_(zone), |
error_(error), |
captures_(NULL), |
@@ -5134,11 +5138,11 @@ RegExpTree* RegExpParser::ParseCharacterClass() { |
// ---------------------------------------------------------------------------- |
// The Parser interface. |
-bool RegExpParser::ParseRegExp(FlatStringReader* input, bool multiline, |
- bool unicode, RegExpCompileData* result, |
- Zone* zone) { |
+bool RegExpParser::ParseRegExp(Isolate* isolate, Zone* zone, |
+ FlatStringReader* input, bool multiline, |
+ bool unicode, RegExpCompileData* result) { |
DCHECK(result != NULL); |
- RegExpParser parser(input, &result->error, multiline, unicode, zone); |
+ RegExpParser parser(input, &result->error, multiline, unicode, isolate, zone); |
RegExpTree* tree = parser.ParsePattern(); |
if (parser.failed()) { |
DCHECK(tree == NULL); |