Chromium Code Reviews| Index: src/scopes.h |
| diff --git a/src/scopes.h b/src/scopes.h |
| index 2e418be219b08844bd94f3f7cc9643aea23ec606..66dfeb46a4d7af23f5289842a95f7bca83557bd9 100644 |
| --- a/src/scopes.h |
| +++ b/src/scopes.h |
| @@ -22,7 +22,7 @@ class VariableMap: public ZoneHashMap { |
| virtual ~VariableMap(); |
| Variable* Declare(Scope* scope, const AstRawString* name, VariableMode mode, |
| - bool is_valid_lhs, Variable::Kind kind, |
| + Variable::Kind kind, |
| InitializationFlag initialization_flag, |
| MaybeAssignedFlag maybe_assigned_flag = kNotAssigned, |
| Interface* interface = Interface::NewValue()); |
| @@ -152,7 +152,7 @@ class Scope: public ZoneObject { |
| // RemoveUnresolved(). |
| DCHECK(!already_resolved()); |
| VariableProxy* proxy = |
| - factory->NewVariableProxy(name, false, interface, position); |
| + factory->NewVariableProxy(name, interface, position); |
|
wingo
2015/02/06 17:31:19
Please make this function take an additional Varia
|
| unresolved_.Add(proxy, zone_); |
| return proxy; |
| } |
| @@ -223,9 +223,6 @@ class Scope: public ZoneObject { |
| scope_uses_super_constructor_call_ = true; |
| } |
| - // Inform the scope that the corresponding code uses "this". |
| - void RecordThisUsage() { scope_uses_this_ = true; } |
| - |
| // Set the strict mode flag (unless disabled by a global flag). |
| void SetStrictMode(StrictMode strict_mode) { strict_mode_ = strict_mode; } |
| @@ -328,10 +325,6 @@ class Scope: public ZoneObject { |
| bool inner_uses_super_constructor_call() const { |
| return inner_scope_uses_super_constructor_call_; |
| } |
| - // Does this scope access "this". |
| - bool uses_this() const { return scope_uses_this_; } |
| - // Does any inner scope access "this". |
| - bool inner_uses_this() const { return inner_scope_uses_this_; } |
| // --------------------------------------------------------------------------- |
| // Accessors. |
| @@ -343,7 +336,15 @@ class Scope: public ZoneObject { |
| StrictMode strict_mode() const { return strict_mode_; } |
| // The variable corresponding the 'this' value. |
| - Variable* receiver() { return receiver_; } |
| + Variable* receiver() { |
| + DCHECK(has_this_declaration()); |
| + DCHECK_NOT_NULL(receiver_); |
| + return receiver_; |
| + } |
| + |
| + bool has_this_declaration() const { |
| + return !is_arrow_scope() && is_declaration_scope(); |
| + } |
| // The variable holding the function literal for named function |
| // literals, or NULL. Only valid for function scopes. |
| @@ -541,8 +542,6 @@ class Scope: public ZoneObject { |
| bool scope_uses_super_property_; |
| // This scope uses "super" constructor ('super(..)'). |
| bool scope_uses_super_constructor_call_; |
| - // This scope uses "this". |
| - bool scope_uses_this_; |
| // This scope contains an "use asm" annotation. |
| bool asm_module_; |
| // This scope's outer context is an asm module. |
| @@ -559,7 +558,6 @@ class Scope: public ZoneObject { |
| bool inner_scope_uses_arguments_; |
| bool inner_scope_uses_super_property_; |
| bool inner_scope_uses_super_constructor_call_; |
| - bool inner_scope_uses_this_; |
| bool force_eager_compilation_; |
| bool force_context_allocation_; |
| @@ -663,6 +661,8 @@ class Scope: public ZoneObject { |
| void AllocateStackSlot(Variable* var); |
| void AllocateHeapSlot(Variable* var); |
| void AllocateParameterLocals(); |
| + void AllocateParameter(Variable* var, int index); |
| + void AllocateReceiver(); |
| void AllocateNonParameterLocal(Variable* var); |
| void AllocateNonParameterLocals(); |
| void AllocateVariablesRecursively(); |