| Index: src/scopes.cc
|
| ===================================================================
|
| --- src/scopes.cc (revision 2255)
|
| +++ src/scopes.cc (working copy)
|
| @@ -81,12 +81,12 @@
|
| Handle<String> name,
|
| Variable::Mode mode,
|
| bool is_valid_LHS,
|
| - bool is_this) {
|
| + Variable::Kind kind) {
|
| HashMap::Entry* p = HashMap::Lookup(name.location(), name->Hash(), true);
|
| if (p->value == NULL) {
|
| // The variable has not been declared yet -> insert it.
|
| ASSERT(p->key == name.location());
|
| - p->value = new Variable(scope, name, mode, is_valid_LHS, is_this);
|
| + p->value = new Variable(scope, name, mode, is_valid_LHS, kind);
|
| }
|
| return reinterpret_cast<Variable*>(p->value);
|
| }
|
| @@ -169,7 +169,8 @@
|
| // such parameter is 'this' which is passed on the stack when
|
| // invoking scripts
|
| { Variable* var =
|
| - locals_.Declare(this, Factory::this_symbol(), Variable::VAR, false, true);
|
| + locals_.Declare(this, Factory::this_symbol(), Variable::VAR,
|
| + false, Variable::THIS);
|
| var->rewrite_ = new Slot(var, Slot::PARAMETER, -1);
|
| receiver_ = new VariableProxy(Factory::this_symbol(), true, false);
|
| receiver_->BindTo(var);
|
| @@ -179,7 +180,8 @@
|
| // Declare 'arguments' variable which exists in all functions.
|
| // Note that it may never be accessed, in which case it won't
|
| // be allocated during variable allocation.
|
| - Declare(Factory::arguments_symbol(), Variable::VAR);
|
| + locals_.Declare(this, Factory::arguments_symbol(), Variable::VAR,
|
| + true, Variable::ARGUMENTS);
|
| }
|
| }
|
|
|
| @@ -203,7 +205,7 @@
|
|
|
| Variable* Scope::DeclareFunctionVar(Handle<String> name) {
|
| ASSERT(is_function_scope() && function_ == NULL);
|
| - function_ = new Variable(this, name, Variable::CONST, true, false);
|
| + function_ = new Variable(this, name, Variable::CONST, true, Variable::NORMAL);
|
| return function_;
|
| }
|
|
|
| @@ -213,7 +215,7 @@
|
| // INTERNAL variables are allocated explicitly, and TEMPORARY
|
| // variables are allocated via NewTemporary().
|
| ASSERT(mode == Variable::VAR || mode == Variable::CONST);
|
| - return locals_.Declare(this, name, mode, true, false);
|
| + return locals_.Declare(this, name, mode, true, Variable::NORMAL);
|
| }
|
|
|
|
|
| @@ -247,7 +249,8 @@
|
|
|
|
|
| VariableProxy* Scope::NewTemporary(Handle<String> name) {
|
| - Variable* var = new Variable(this, name, Variable::TEMPORARY, true, false);
|
| + Variable* var = new Variable(this, name, Variable::TEMPORARY, true,
|
| + Variable::NORMAL);
|
| VariableProxy* tmp = new VariableProxy(name, false, false);
|
| tmp->BindTo(var);
|
| temps_.Add(var);
|
| @@ -503,7 +506,7 @@
|
| Variable* var = map->Lookup(name);
|
| if (var == NULL) {
|
| // Declare a new non-local.
|
| - var = map->Declare(NULL, name, mode, true, false);
|
| + var = map->Declare(NULL, name, mode, true, Variable::NORMAL);
|
| // Allocate it by giving it a dynamic lookup.
|
| var->rewrite_ = new Slot(var, Slot::LOOKUP, -1);
|
| }
|
| @@ -619,7 +622,7 @@
|
| // We must have a global variable.
|
| ASSERT(global_scope != NULL);
|
| var = new Variable(global_scope, proxy->name(),
|
| - Variable::DYNAMIC, true, false);
|
| + Variable::DYNAMIC, true, Variable::NORMAL);
|
|
|
| } else if (scope_inside_with_) {
|
| // If we are inside a with statement we give up and look up
|
| @@ -797,7 +800,7 @@
|
| // are never allocated in the context).
|
| Variable* arguments_shadow =
|
| new Variable(this, Factory::arguments_shadow_symbol(),
|
| - Variable::INTERNAL, true, false);
|
| + Variable::INTERNAL, true, Variable::ARGUMENTS);
|
| arguments_shadow_ =
|
| new VariableProxy(Factory::arguments_shadow_symbol(), false, false);
|
| arguments_shadow_->BindTo(arguments_shadow);
|
|
|