| Index: src/scopes.h
|
| diff --git a/src/scopes.h b/src/scopes.h
|
| index 2757bf2402a6479b0d2bd486495e61f5d6eb2ee8..c2c8e3e3e4d1ea47ae9a4baa12302358206cd285 100644
|
| --- a/src/scopes.h
|
| +++ b/src/scopes.h
|
| @@ -211,6 +211,12 @@ class Scope: public ZoneObject {
|
| // Inform the scope that the corresponding code contains an eval call.
|
| void RecordEvalCall() { if (!is_global_scope()) scope_calls_eval_ = true; }
|
|
|
| + // Inform the scope that the corresponding code uses "this".
|
| + void RecordThisUsage() { scope_uses_this_ = true; }
|
| +
|
| + // Inform the scope that the corresponding code uses "arguments".
|
| + void RecordArgumentsUsage() { scope_uses_arguments_ = true; }
|
| +
|
| // Set the strict mode flag (unless disabled by a global flag).
|
| void SetStrictMode(StrictMode strict_mode) { strict_mode_ = strict_mode; }
|
|
|
| @@ -287,6 +293,15 @@ class Scope: public ZoneObject {
|
| // Does this scope contain a with statement.
|
| bool contains_with() const { return scope_contains_with_; }
|
|
|
| + // 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_; }
|
| + // Does this scope access "arguments".
|
| + bool uses_arguments() const { return scope_uses_arguments_; }
|
| + // Does any inner scope access "arguments".
|
| + bool inner_uses_arguments() const { return inner_scope_uses_arguments_; }
|
| +
|
| // ---------------------------------------------------------------------------
|
| // Accessors.
|
|
|
| @@ -463,6 +478,10 @@ class Scope: public ZoneObject {
|
| // This scope or a nested catch scope or with scope contain an 'eval' call. At
|
| // the 'eval' call site this scope is the declaration scope.
|
| bool scope_calls_eval_;
|
| + // This scope uses "this".
|
| + bool scope_uses_this_;
|
| + // This scope uses "arguments".
|
| + bool scope_uses_arguments_;
|
| // The strict mode of this scope.
|
| StrictMode strict_mode_;
|
| // Source positions.
|
| @@ -472,6 +491,8 @@ class Scope: public ZoneObject {
|
| // Computed via PropagateScopeInfo.
|
| bool outer_scope_calls_sloppy_eval_;
|
| bool inner_scope_calls_eval_;
|
| + bool inner_scope_uses_this_;
|
| + bool inner_scope_uses_arguments_;
|
| bool force_eager_compilation_;
|
| bool force_context_allocation_;
|
|
|
|
|