Index: src/full-codegen/x64/full-codegen-x64.cc |
diff --git a/src/full-codegen/x64/full-codegen-x64.cc b/src/full-codegen/x64/full-codegen-x64.cc |
index cf168a598e02ba67fcd5f6b3cf08d7b7a3c785ce..9d783d3b8a339ca5f305718068be8266248e0052 100644 |
--- a/src/full-codegen/x64/full-codegen-x64.cc |
+++ b/src/full-codegen/x64/full-codegen-x64.cc |
@@ -91,6 +91,7 @@ class JumpPatchSite BASE_EMBEDDED { |
// frames-x64.h for its layout. |
void FullCodeGenerator::Generate() { |
CompilationInfo* info = info_; |
+ DCHECK_EQ(scope(), info->scope()); |
profiling_counter_ = isolate()->factory()->NewCell( |
Handle<Smi>(Smi::FromInt(FLAG_interrupt_budget), isolate())); |
SetFunctionPosition(literal()); |
@@ -193,7 +194,8 @@ void FullCodeGenerator::Generate() { |
int num_parameters = info->scope()->num_parameters(); |
int first_parameter = info->scope()->has_this_declaration() ? -1 : 0; |
for (int i = first_parameter; i < num_parameters; i++) { |
- Variable* var = (i == -1) ? scope()->receiver() : scope()->parameter(i); |
+ Variable* var = |
+ (i == -1) ? info->scope()->receiver() : info->scope()->parameter(i); |
if (var->IsContextSlot()) { |
int parameter_offset = StandardFrameConstants::kCallerSPOffset + |
(num_parameters - 1 - i) * kPointerSize; |
@@ -224,7 +226,7 @@ void FullCodeGenerator::Generate() { |
// Possibly set up a local binding to the this function which is used in |
// derived constructors with super calls. |
- Variable* this_function_var = scope()->this_function_var(); |
+ Variable* this_function_var = info->scope()->this_function_var(); |
if (this_function_var != nullptr) { |
Comment cmnt(masm_, "[ This function"); |
if (!function_in_register) { |
@@ -235,7 +237,7 @@ void FullCodeGenerator::Generate() { |
} |
// Possibly set up a local binding to the new target value. |
- Variable* new_target_var = scope()->new_target_var(); |
+ Variable* new_target_var = info->scope()->new_target_var(); |
if (new_target_var != nullptr) { |
Comment cmnt(masm_, "[ new.target"); |
SetVar(new_target_var, rdx, rbx, rcx); |
@@ -243,7 +245,7 @@ void FullCodeGenerator::Generate() { |
// Possibly allocate RestParameters |
int rest_index; |
- Variable* rest_param = scope()->rest_parameter(&rest_index); |
+ Variable* rest_param = info->scope()->rest_parameter(&rest_index); |
if (rest_param) { |
Comment cmnt(masm_, "[ Allocate rest parameter array"); |
if (!function_in_register) { |
@@ -256,7 +258,8 @@ void FullCodeGenerator::Generate() { |
} |
// Possibly allocate an arguments object. |
- Variable* arguments = scope()->arguments(); |
+ DCHECK_EQ(scope(), info->scope()); |
+ Variable* arguments = info->scope()->arguments(); |
if (arguments != NULL) { |
// Arguments object must be allocated after the context object, in |
// case the "arguments" or ".arguments" variables are in the context. |
@@ -288,7 +291,7 @@ void FullCodeGenerator::Generate() { |
BailoutState::NO_REGISTERS); |
{ |
Comment cmnt(masm_, "[ Declarations"); |
- VisitDeclarations(scope()->declarations()); |
+ VisitDeclarations(info->scope()->declarations()); |
} |
// Assert that the declarations do not use ICs. Otherwise the debugger |
@@ -3512,7 +3515,7 @@ void FullCodeGenerator::LoadContextField(Register dst, int context_index) { |
void FullCodeGenerator::PushFunctionArgumentForContextAllocation() { |
- Scope* closure_scope = scope()->ClosureScope(); |
+ DeclarationScope* closure_scope = scope()->GetClosureScope(); |
if (closure_scope->is_script_scope() || |
closure_scope->is_module_scope()) { |
// Contexts nested in the native context have a canonical empty function |