Index: src/scopes.cc |
diff --git a/src/scopes.cc b/src/scopes.cc |
index 39b67a886444fe1db46a54e4006d37abd68d447a..7687a4cbb6dc69fe12dcf5e6285a4321100d5052 100644 |
--- a/src/scopes.cc |
+++ b/src/scopes.cc |
@@ -67,9 +67,9 @@ Variable* VariableMap::Lookup(const AstRawString* name) { |
// ---------------------------------------------------------------------------- |
// Implementation of Scope |
-Scope::Scope(Scope* outer_scope, ScopeType scope_type, |
- AstValueFactory* ast_value_factory, Zone* zone) |
- : isolate_(zone->isolate()), |
+Scope::Scope(Isolate* isolate, Zone* zone, Scope* outer_scope, |
+ ScopeType scope_type, AstValueFactory* ast_value_factory) |
+ : isolate_(isolate), |
inner_scopes_(4, zone), |
variables_(zone), |
internals_(4, zone), |
@@ -77,9 +77,10 @@ Scope::Scope(Scope* outer_scope, ScopeType scope_type, |
params_(4, zone), |
unresolved_(16, zone), |
decls_(4, zone), |
- interface_(FLAG_harmony_modules && |
- (scope_type == MODULE_SCOPE || scope_type == SCRIPT_SCOPE) |
- ? Interface::NewModule(zone) : NULL), |
+ interface_(FLAG_harmony_modules && (scope_type == MODULE_SCOPE || |
+ scope_type == SCRIPT_SCOPE) |
+ ? Interface::NewModule(zone) |
+ : NULL), |
already_resolved_(false), |
ast_value_factory_(ast_value_factory), |
zone_(zone) { |
@@ -90,12 +91,10 @@ Scope::Scope(Scope* outer_scope, ScopeType scope_type, |
} |
-Scope::Scope(Scope* inner_scope, |
- ScopeType scope_type, |
- Handle<ScopeInfo> scope_info, |
- AstValueFactory* value_factory, |
- Zone* zone) |
- : isolate_(zone->isolate()), |
+Scope::Scope(Isolate* isolate, Zone* zone, Scope* inner_scope, |
+ ScopeType scope_type, Handle<ScopeInfo> scope_info, |
+ AstValueFactory* value_factory) |
+ : isolate_(isolate), |
inner_scopes_(4, zone), |
variables_(zone), |
internals_(4, zone), |
@@ -118,9 +117,10 @@ Scope::Scope(Scope* inner_scope, |
} |
-Scope::Scope(Scope* inner_scope, const AstRawString* catch_variable_name, |
- AstValueFactory* value_factory, Zone* zone) |
- : isolate_(zone->isolate()), |
+Scope::Scope(Isolate* isolate, Zone* zone, Scope* inner_scope, |
+ const AstRawString* catch_variable_name, |
+ AstValueFactory* value_factory) |
+ : isolate_(isolate), |
inner_scopes_(1, zone), |
variables_(zone), |
internals_(0, zone), |
@@ -192,19 +192,17 @@ void Scope::SetDefaults(ScopeType scope_type, |
} |
-Scope* Scope::DeserializeScopeChain(Context* context, Scope* script_scope, |
- Zone* zone) { |
+Scope* Scope::DeserializeScopeChain(Isolate* isolate, Zone* zone, |
+ Context* context, Scope* script_scope) { |
// Reconstruct the outer scope chain from a closure's context chain. |
Scope* current_scope = NULL; |
Scope* innermost_scope = NULL; |
bool contains_with = false; |
while (!context->IsNativeContext()) { |
if (context->IsWithContext()) { |
- Scope* with_scope = new(zone) Scope(current_scope, |
- WITH_SCOPE, |
- Handle<ScopeInfo>::null(), |
- script_scope->ast_value_factory_, |
- zone); |
+ Scope* with_scope = new (zone) |
+ Scope(isolate, zone, current_scope, WITH_SCOPE, |
+ Handle<ScopeInfo>::null(), script_scope->ast_value_factory_); |
current_scope = with_scope; |
// All the inner scopes are inside a with. |
contains_with = true; |
@@ -213,41 +211,33 @@ Scope* Scope::DeserializeScopeChain(Context* context, Scope* script_scope, |
} |
} else if (context->IsScriptContext()) { |
ScopeInfo* scope_info = ScopeInfo::cast(context->extension()); |
- current_scope = new(zone) Scope(current_scope, |
- SCRIPT_SCOPE, |
- Handle<ScopeInfo>(scope_info), |
- script_scope->ast_value_factory_, |
- zone); |
+ current_scope = new (zone) Scope( |
+ isolate, zone, current_scope, SCRIPT_SCOPE, |
+ Handle<ScopeInfo>(scope_info), script_scope->ast_value_factory_); |
} else if (context->IsModuleContext()) { |
ScopeInfo* scope_info = ScopeInfo::cast(context->module()->scope_info()); |
- current_scope = new(zone) Scope(current_scope, |
- MODULE_SCOPE, |
- Handle<ScopeInfo>(scope_info), |
- script_scope->ast_value_factory_, |
- zone); |
+ current_scope = new (zone) Scope( |
+ isolate, zone, current_scope, MODULE_SCOPE, |
+ Handle<ScopeInfo>(scope_info), script_scope->ast_value_factory_); |
} else if (context->IsFunctionContext()) { |
ScopeInfo* scope_info = context->closure()->shared()->scope_info(); |
- current_scope = new(zone) Scope(current_scope, |
- FUNCTION_SCOPE, |
- Handle<ScopeInfo>(scope_info), |
- script_scope->ast_value_factory_, |
- zone); |
+ current_scope = new (zone) Scope( |
+ isolate, zone, current_scope, FUNCTION_SCOPE, |
+ Handle<ScopeInfo>(scope_info), script_scope->ast_value_factory_); |
if (scope_info->IsAsmFunction()) current_scope->asm_function_ = true; |
if (scope_info->IsAsmModule()) current_scope->asm_module_ = true; |
} else if (context->IsBlockContext()) { |
ScopeInfo* scope_info = ScopeInfo::cast(context->extension()); |
- current_scope = new(zone) Scope(current_scope, |
- BLOCK_SCOPE, |
- Handle<ScopeInfo>(scope_info), |
- script_scope->ast_value_factory_, |
- zone); |
+ current_scope = new (zone) Scope( |
+ isolate, zone, current_scope, BLOCK_SCOPE, |
+ Handle<ScopeInfo>(scope_info), script_scope->ast_value_factory_); |
} else { |
DCHECK(context->IsCatchContext()); |
String* name = String::cast(context->extension()); |
current_scope = new (zone) Scope( |
- current_scope, |
+ isolate, zone, current_scope, |
script_scope->ast_value_factory_->GetString(Handle<String>(name)), |
- script_scope->ast_value_factory_, zone); |
+ script_scope->ast_value_factory_); |
} |
if (contains_with) current_scope->RecordWithStatement(); |
if (innermost_scope == NULL) innermost_scope = current_scope; |
@@ -758,7 +748,7 @@ Scope* Scope::DeclarationScope() { |
Handle<ScopeInfo> Scope::GetScopeInfo() { |
if (scope_info_.is_null()) { |
- scope_info_ = ScopeInfo::Create(this, zone()); |
+ scope_info_ = ScopeInfo::Create(isolate(), zone(), this); |
} |
return scope_info_; |
} |