| Index: src/scopes.h
|
| diff --git a/src/scopes.h b/src/scopes.h
|
| index f3c64f9eadf73c7c4f9c1671779c4f55926697f9..5e3dc1f0654bf65c3ee738665fcb7bf2107be63b 100644
|
| --- a/src/scopes.h
|
| +++ b/src/scopes.h
|
| @@ -144,15 +144,14 @@
|
| // Create a new unresolved variable.
|
| VariableProxy* NewUnresolved(AstNodeFactory* factory,
|
| const AstRawString* name,
|
| - Variable::Kind kind = Variable::NORMAL,
|
| int start_position = RelocInfo::kNoPosition,
|
| int end_position = RelocInfo::kNoPosition) {
|
| // Note that we must not share the unresolved variables with
|
| // the same name because they may be removed selectively via
|
| // RemoveUnresolved().
|
| DCHECK(!already_resolved());
|
| - VariableProxy* proxy =
|
| - factory->NewVariableProxy(name, kind, start_position, end_position);
|
| + VariableProxy* proxy = factory->NewVariableProxy(
|
| + name, Variable::NORMAL, start_position, end_position);
|
| unresolved_.Add(proxy, zone_);
|
| return proxy;
|
| }
|
| @@ -217,6 +216,9 @@
|
|
|
| // Inform the scope that the corresponding code uses "super".
|
| void RecordSuperPropertyUsage() { scope_uses_super_property_ = true; }
|
| +
|
| + // Inform the scope that the corresponding code uses "this".
|
| + void RecordThisUsage() { scope_uses_this_ = true; }
|
|
|
| // Set the language mode flag (unless disabled by a global flag).
|
| void SetLanguageMode(LanguageMode language_mode) {
|
| @@ -321,6 +323,10 @@
|
| bool inner_uses_super_property() const {
|
| return inner_scope_uses_super_property_;
|
| }
|
| + // 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_; }
|
|
|
| const Scope* NearestOuterEvalScope() const {
|
| if (is_eval_scope()) return this;
|
| @@ -340,21 +346,7 @@
|
| LanguageMode language_mode() const { return language_mode_; }
|
|
|
| // The variable corresponding to the 'this' value.
|
| - Variable* receiver() {
|
| - DCHECK(has_this_declaration());
|
| - DCHECK_NOT_NULL(receiver_);
|
| - return receiver_;
|
| - }
|
| -
|
| - Variable* LookupThis() { return Lookup(ast_value_factory_->this_string()); }
|
| -
|
| - // TODO(wingo): Add a GLOBAL_SCOPE scope type which will lexically allocate
|
| - // "this" (and no other variable) on the native context. Script scopes then
|
| - // will not have a "this" declaration.
|
| - bool has_this_declaration() const {
|
| - return (is_function_scope() && !is_arrow_scope()) || is_module_scope() ||
|
| - is_script_scope();
|
| - }
|
| + Variable* receiver() { return receiver_; }
|
|
|
| // The variable corresponding to the 'new.target' value.
|
| Variable* new_target_var() { return new_target_; }
|
| @@ -585,6 +577,8 @@
|
| bool scope_uses_arguments_;
|
| // This scope uses "super" property ('super.foo').
|
| bool scope_uses_super_property_;
|
| + // 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.
|
| @@ -600,6 +594,7 @@
|
| bool inner_scope_calls_eval_;
|
| bool inner_scope_uses_arguments_;
|
| bool inner_scope_uses_super_property_;
|
| + bool inner_scope_uses_this_;
|
| bool force_eager_compilation_;
|
| bool force_context_allocation_;
|
|
|
| @@ -711,8 +706,6 @@
|
| void AllocateNonParameterLocal(Isolate* isolate, Variable* var);
|
| void AllocateNonParameterLocals(Isolate* isolate);
|
| void AllocateVariablesRecursively(Isolate* isolate);
|
| - void AllocateParameter(Variable* var, int index);
|
| - void AllocateReceiver();
|
| void AllocateModules();
|
|
|
| // Resolve and fill in the allocation information for all variables
|
|
|