| Index: runtime/vm/scopes.cc
|
| ===================================================================
|
| --- runtime/vm/scopes.cc (revision 37878)
|
| +++ runtime/vm/scopes.cc (working copy)
|
| @@ -253,12 +253,14 @@
|
| for (int i = 0; i < context_scope.num_variables(); i++) {
|
| VarDesc desc;
|
| desc.name = &String::Handle(context_scope.NameAt(i));
|
| - desc.info.kind = RawLocalVarDescriptors::kContextVar;
|
| + desc.info.index_kind = RawLocalVarDescriptors::KindBits::update(
|
| + RawLocalVarDescriptors::kContextVar, desc.info.index_kind);
|
| desc.info.scope_id = context_scope.ContextLevelAt(i);
|
| desc.info.begin_pos = begin_token_pos();
|
| desc.info.end_pos = end_token_pos();
|
| ASSERT(desc.info.begin_pos <= desc.info.end_pos);
|
| - desc.info.index = context_scope.ContextIndexAt(i);
|
| + desc.info.index_kind = RawLocalVarDescriptors::IndexBits::update(
|
| + context_scope.ContextIndexAt(i), desc.info.index_kind);
|
| vars.Add(desc);
|
| }
|
| }
|
| @@ -295,11 +297,13 @@
|
| // context level differs from its parent's level.
|
| VarDesc desc;
|
| desc.name = &String::Handle(); // No name.
|
| - desc.info.kind = RawLocalVarDescriptors::kContextLevel;
|
| + desc.info.index_kind = RawLocalVarDescriptors::KindBits::update(
|
| + RawLocalVarDescriptors::kContextLevel, desc.info.index_kind);
|
| desc.info.scope_id = *scope_id;
|
| desc.info.begin_pos = begin_token_pos();
|
| desc.info.end_pos = end_token_pos();
|
| - desc.info.index = context_level();
|
| + desc.info.index_kind = RawLocalVarDescriptors::IndexBits::update(
|
| + context_level(), desc.info.index_kind);
|
| vars->Add(desc);
|
| }
|
| for (int i = 0; i < this->variables_.length(); i++) {
|
| @@ -310,39 +314,46 @@
|
| VarDesc desc;
|
| desc.name = &var->name();
|
| if (var->is_captured()) {
|
| - desc.info.kind = RawLocalVarDescriptors::kContextVar;
|
| + desc.info.index_kind = RawLocalVarDescriptors::KindBits::update(
|
| + RawLocalVarDescriptors::kContextVar, desc.info.index_kind);
|
| ASSERT(var->owner() != NULL);
|
| ASSERT(var->owner()->context_level() >= 0);
|
| desc.info.scope_id = var->owner()->context_level();
|
| } else {
|
| - desc.info.kind = RawLocalVarDescriptors::kStackVar;
|
| + desc.info.index_kind = RawLocalVarDescriptors::KindBits::update(
|
| + RawLocalVarDescriptors::kStackVar, desc.info.index_kind);
|
| desc.info.scope_id = *scope_id;
|
| }
|
| desc.info.begin_pos = var->token_pos();
|
| desc.info.end_pos = var->owner()->end_token_pos();
|
| - desc.info.index = var->index();
|
| + desc.info.index_kind = RawLocalVarDescriptors::IndexBits::update(
|
| + var->index(), desc.info.index_kind);
|
| vars->Add(desc);
|
| } else if (var->name().raw() == Symbols::SavedEntryContextVar().raw()) {
|
| // This is the local variable in which the function saves the
|
| // caller's chain of closure contexts (caller's CTX register).
|
| VarDesc desc;
|
| desc.name = &var->name();
|
| - desc.info.kind = RawLocalVarDescriptors::kSavedEntryContext;
|
| + desc.info.index_kind = RawLocalVarDescriptors::KindBits::update(
|
| + RawLocalVarDescriptors::kSavedEntryContext, desc.info.index_kind);
|
| desc.info.scope_id = 0;
|
| desc.info.begin_pos = 0;
|
| desc.info.end_pos = 0;
|
| - desc.info.index = var->index();
|
| + desc.info.index_kind = RawLocalVarDescriptors::IndexBits::update(
|
| + var->index(), desc.info.index_kind);
|
| vars->Add(desc);
|
| } else if (var->name().raw() == Symbols::SavedCurrentContextVar().raw()) {
|
| // This is the local variable in which the function saves its
|
| // own context before calling a closure function.
|
| VarDesc desc;
|
| desc.name = &var->name();
|
| - desc.info.kind = RawLocalVarDescriptors::kSavedCurrentContext;
|
| + desc.info.index_kind = RawLocalVarDescriptors::KindBits::update(
|
| + RawLocalVarDescriptors::kSavedCurrentContext, desc.info.index_kind);
|
| desc.info.scope_id = 0;
|
| desc.info.begin_pos = 0;
|
| desc.info.end_pos = 0;
|
| - desc.info.index = var->index();
|
| + desc.info.index_kind = RawLocalVarDescriptors::IndexBits::update(
|
| + var->index(), desc.info.index_kind);
|
| vars->Add(desc);
|
| }
|
| }
|
|
|