| Index: src/ast/scopeinfo.cc
|
| diff --git a/src/ast/scopeinfo.cc b/src/ast/scopeinfo.cc
|
| index 336f96ead18a7bfdca6a386b5f71527ef9a4aae3..a9e824f415bae54881eb5dc84c3787905418756c 100644
|
| --- a/src/ast/scopeinfo.cc
|
| +++ b/src/ast/scopeinfo.cc
|
| @@ -14,13 +14,11 @@ namespace internal {
|
|
|
| Handle<ScopeInfo> ScopeInfo::Create(Isolate* isolate, Zone* zone,
|
| Scope* scope) {
|
| - // Collect stack and context locals.
|
| + // Collect variables.
|
| ZoneList<Variable*> stack_locals(scope->StackLocalCount(), zone);
|
| ZoneList<Variable*> context_locals(scope->ContextLocalCount(), zone);
|
| ZoneList<Variable*> context_globals(scope->ContextGlobalCount(), zone);
|
| -
|
| - scope->CollectStackAndContextLocals(&stack_locals, &context_locals,
|
| - &context_globals);
|
| + scope->CollectVariables(&stack_locals, &context_locals, &context_globals);
|
| const int stack_local_count = stack_locals.length();
|
| const int context_local_count = context_locals.length();
|
| const int context_global_count = context_globals.length();
|
| @@ -148,10 +146,9 @@ Handle<ScopeInfo> ScopeInfo::Create(Isolate* isolate, Zone* zone,
|
| for (int i = 0; i < context_local_count; ++i) {
|
| Variable* var = context_locals[i];
|
| int context_index = var->index() - Context::MIN_CONTEXT_SLOTS;
|
| - uint32_t info =
|
| - ContextLocalMode::encode(var->mode()) |
|
| - ContextLocalInitFlag::encode(var->initialization_flag()) |
|
| - ContextLocalMaybeAssignedFlag::encode(var->maybe_assigned());
|
| + uint32_t info = VariableModeField::encode(var->mode()) |
|
| + InitFlagField::encode(var->initialization_flag()) |
|
| + MaybeAssignedFlagField::encode(var->maybe_assigned());
|
| scope_info->set(index + context_index, *var->name());
|
| scope_info->set(info_index + context_index, Smi::FromInt(info));
|
| }
|
| @@ -166,10 +163,9 @@ Handle<ScopeInfo> ScopeInfo::Create(Isolate* isolate, Zone* zone,
|
| Variable* var = context_globals[i];
|
| scope_info->set(index + i, *var->name());
|
| // TODO(ishell): do we need this kind of info for globals here?
|
| - uint32_t info =
|
| - ContextLocalMode::encode(var->mode()) |
|
| - ContextLocalInitFlag::encode(var->initialization_flag()) |
|
| - ContextLocalMaybeAssignedFlag::encode(var->maybe_assigned());
|
| + uint32_t info = VariableModeField::encode(var->mode()) |
|
| + InitFlagField::encode(var->initialization_flag()) |
|
| + MaybeAssignedFlagField::encode(var->maybe_assigned());
|
| scope_info->set(info_index + i, Smi::FromInt(info));
|
| }
|
|
|
| @@ -252,9 +248,9 @@ Handle<ScopeInfo> ScopeInfo::CreateGlobalThisBinding(Isolate* isolate) {
|
| DCHECK(index == scope_info->ContextLocalNameEntriesIndex());
|
| scope_info->set(index++, *isolate->factory()->this_string());
|
| DCHECK(index == scope_info->ContextLocalInfoEntriesIndex());
|
| - const uint32_t value = ContextLocalMode::encode(CONST) |
|
| - ContextLocalInitFlag::encode(kCreatedInitialized) |
|
| - ContextLocalMaybeAssignedFlag::encode(kNotAssigned);
|
| + const uint32_t value = VariableModeField::encode(CONST) |
|
| + InitFlagField::encode(kCreatedInitialized) |
|
| + MaybeAssignedFlagField::encode(kNotAssigned);
|
| scope_info->set(index++, Smi::FromInt(value));
|
|
|
| // And here we record that this scopeinfo binds a receiver.
|
| @@ -428,7 +424,7 @@ VariableMode ScopeInfo::ContextLocalMode(int var) {
|
| DCHECK(0 <= var && var < ContextLocalCount() + ContextGlobalCount());
|
| int info_index = ContextLocalInfoEntriesIndex() + var;
|
| int value = Smi::cast(get(info_index))->value();
|
| - return ContextLocalMode::decode(value);
|
| + return VariableModeField::decode(value);
|
| }
|
|
|
|
|
| @@ -436,7 +432,7 @@ InitializationFlag ScopeInfo::ContextLocalInitFlag(int var) {
|
| DCHECK(0 <= var && var < ContextLocalCount() + ContextGlobalCount());
|
| int info_index = ContextLocalInfoEntriesIndex() + var;
|
| int value = Smi::cast(get(info_index))->value();
|
| - return ContextLocalInitFlag::decode(value);
|
| + return InitFlagField::decode(value);
|
| }
|
|
|
|
|
| @@ -444,7 +440,7 @@ MaybeAssignedFlag ScopeInfo::ContextLocalMaybeAssignedFlag(int var) {
|
| DCHECK(0 <= var && var < ContextLocalCount() + ContextGlobalCount());
|
| int info_index = ContextLocalInfoEntriesIndex() + var;
|
| int value = Smi::cast(get(info_index))->value();
|
| - return ContextLocalMaybeAssignedFlag::decode(value);
|
| + return MaybeAssignedFlagField::decode(value);
|
| }
|
|
|
| bool ScopeInfo::VariableIsSynthetic(String* name) {
|
| @@ -462,7 +458,7 @@ int ScopeInfo::StackSlotIndex(String* name) {
|
| if (length() > 0) {
|
| int first_slot_index = Smi::cast(get(StackLocalFirstSlotIndex()))->value();
|
| int start = StackLocalEntriesIndex();
|
| - int end = StackLocalEntriesIndex() + StackLocalCount();
|
| + int end = start + StackLocalCount();
|
| for (int i = start; i < end; ++i) {
|
| if (name == get(i)) {
|
| return i - start + first_slot_index;
|
| @@ -478,8 +474,10 @@ int ScopeInfo::ContextSlotIndex(Handle<ScopeInfo> scope_info,
|
| InitializationFlag* init_flag,
|
| MaybeAssignedFlag* maybe_assigned_flag) {
|
| DCHECK(name->IsInternalizedString());
|
| - DCHECK(mode != NULL);
|
| - DCHECK(init_flag != NULL);
|
| + DCHECK_NOT_NULL(mode);
|
| + DCHECK_NOT_NULL(init_flag);
|
| + DCHECK_NOT_NULL(maybe_assigned_flag);
|
| +
|
| if (scope_info->length() > 0) {
|
| ContextSlotCache* context_slot_cache =
|
| scope_info->GetIsolate()->context_slot_cache();
|
| @@ -491,8 +489,7 @@ int ScopeInfo::ContextSlotIndex(Handle<ScopeInfo> scope_info,
|
| }
|
|
|
| int start = scope_info->ContextLocalNameEntriesIndex();
|
| - int end = scope_info->ContextLocalNameEntriesIndex() +
|
| - scope_info->ContextLocalCount();
|
| + int end = start + scope_info->ContextLocalCount();
|
| for (int i = start; i < end; ++i) {
|
| if (*name == scope_info->get(i)) {
|
| int var = i - start;
|
| @@ -511,17 +508,18 @@ int ScopeInfo::ContextSlotIndex(Handle<ScopeInfo> scope_info,
|
| context_slot_cache->Update(scope_info, name, TEMPORARY,
|
| kNeedsInitialization, kNotAssigned, -1);
|
| }
|
| +
|
| return -1;
|
| }
|
|
|
| -
|
| int ScopeInfo::ContextGlobalSlotIndex(Handle<ScopeInfo> scope_info,
|
| Handle<String> name, VariableMode* mode,
|
| InitializationFlag* init_flag,
|
| MaybeAssignedFlag* maybe_assigned_flag) {
|
| DCHECK(name->IsInternalizedString());
|
| - DCHECK(mode != NULL);
|
| - DCHECK(init_flag != NULL);
|
| + DCHECK_NOT_NULL(mode);
|
| + DCHECK_NOT_NULL(init_flag);
|
| + DCHECK_NOT_NULL(maybe_assigned_flag);
|
| if (scope_info->length() > 0) {
|
| // This is to ensure that ContextLocalMode() and co. queries would work.
|
| DCHECK_EQ(scope_info->ContextGlobalNameEntriesIndex(),
|
| @@ -529,8 +527,7 @@ int ScopeInfo::ContextGlobalSlotIndex(Handle<ScopeInfo> scope_info,
|
| scope_info->ContextLocalCount());
|
| int base = scope_info->ContextLocalNameEntriesIndex();
|
| int start = scope_info->ContextGlobalNameEntriesIndex();
|
| - int end = scope_info->ContextGlobalNameEntriesIndex() +
|
| - scope_info->ContextGlobalCount();
|
| + int end = start + scope_info->ContextGlobalCount();
|
| for (int i = start; i < end; ++i) {
|
| if (*name == scope_info->get(i)) {
|
| int var = i - base;
|
| @@ -564,7 +561,7 @@ int ScopeInfo::ParameterIndex(String* name) {
|
| // inside a function (and thus we need to look
|
| // at the last index). Was bug# 1110337.
|
| int start = ParameterEntriesIndex();
|
| - int end = ParameterEntriesIndex() + ParameterCount();
|
| + int end = start + ParameterCount();
|
| for (int i = end - 1; i >= start; --i) {
|
| if (name == get(i)) {
|
| return i - start;
|
|
|