| Index: src/ast/scopes.cc
|
| diff --git a/src/ast/scopes.cc b/src/ast/scopes.cc
|
| index fbc29609fd06ef80a112e561e69f78ae42789286..50305fc5c2e50a362766d9f8b0dfebe385a4a224 100644
|
| --- a/src/ast/scopes.cc
|
| +++ b/src/ast/scopes.cc
|
| @@ -217,7 +217,6 @@ void Scope::SetDefaults() {
|
| inner_scope_ = nullptr;
|
| sibling_ = nullptr;
|
| unresolved_ = nullptr;
|
| - dynamics_ = nullptr;
|
|
|
| start_position_ = kNoSourcePosition;
|
| end_position_ = kNoSourcePosition;
|
| @@ -1077,14 +1076,16 @@ static void PrintVar(int indent, Variable* var) {
|
| }
|
| }
|
|
|
| -
|
| -static void PrintMap(int indent, VariableMap* map) {
|
| - for (VariableMap::Entry* p = map->Start(); p != NULL; p = map->Next(p)) {
|
| +static void PrintMap(int indent, VariableMap* map, bool locals) {
|
| + for (VariableMap::Entry* p = map->Start(); p != nullptr; p = map->Next(p)) {
|
| Variable* var = reinterpret_cast<Variable*>(p->value);
|
| - if (var == NULL) {
|
| - Indent(indent, "<?>\n");
|
| - } else {
|
| - PrintVar(indent, var);
|
| + bool local = !IsDynamicVariableMode(var->mode());
|
| + if (locals ? local : !local) {
|
| + if (var == nullptr) {
|
| + Indent(indent, "<?>\n");
|
| + } else {
|
| + PrintVar(indent, var);
|
| + }
|
| }
|
| }
|
| }
|
| @@ -1173,14 +1174,10 @@ void Scope::Print(int n) {
|
|
|
| if (variables_.Start() != NULL) {
|
| Indent(n1, "// local vars:\n");
|
| - PrintMap(n1, &variables_);
|
| - }
|
| + PrintMap(n1, &variables_, true);
|
|
|
| - if (dynamics_ != NULL) {
|
| Indent(n1, "// dynamic vars:\n");
|
| - PrintMap(n1, dynamics_->GetMap(DYNAMIC));
|
| - PrintMap(n1, dynamics_->GetMap(DYNAMIC_LOCAL));
|
| - PrintMap(n1, dynamics_->GetMap(DYNAMIC_GLOBAL));
|
| + PrintMap(n1, &variables_, false);
|
| }
|
|
|
| // Print inner scopes (disable by providing negative n).
|
| @@ -1215,17 +1212,12 @@ void Scope::CheckZones() {
|
| #endif // DEBUG
|
|
|
| Variable* Scope::NonLocal(const AstRawString* name, VariableMode mode) {
|
| - if (dynamics_ == NULL) dynamics_ = new (zone()) DynamicScopePart(zone());
|
| - VariableMap* map = dynamics_->GetMap(mode);
|
| - Variable* var = map->Lookup(name);
|
| - if (var == NULL) {
|
| - // Declare a new non-local.
|
| - DCHECK(!IsLexicalVariableMode(mode));
|
| - var = map->Declare(zone(), NULL, name, mode, Variable::NORMAL,
|
| - kCreatedInitialized);
|
| - // Allocate it by giving it a dynamic lookup.
|
| - var->AllocateTo(VariableLocation::LOOKUP, -1);
|
| - }
|
| + // Declare a new non-local.
|
| + DCHECK(IsDynamicVariableMode(mode));
|
| + Variable* var = variables_.Declare(zone(), NULL, name, mode, Variable::NORMAL,
|
| + kCreatedInitialized);
|
| + // Allocate it by giving it a dynamic lookup.
|
| + var->AllocateTo(VariableLocation::LOOKUP, -1);
|
| return var;
|
| }
|
|
|
|
|