| Index: src/variables.cc
|
| diff --git a/src/variables.cc b/src/variables.cc
|
| index 49846fee31b8001c2084d9ae1cdc0b9b62aab879..18a45abd73890b3fae56caee89618e0f1224ce21 100644
|
| --- a/src/variables.cc
|
| +++ b/src/variables.cc
|
| @@ -39,7 +39,7 @@ Variable::Variable(Scope* scope, const AstRawString* name, VariableMode mode,
|
| name_(name),
|
| mode_(mode),
|
| kind_(kind),
|
| - location_(UNALLOCATED),
|
| + location_(VariableLocation::UNALLOCATED),
|
| index_(-1),
|
| initializer_position_(RelocInfo::kNoPosition),
|
| has_strong_mode_reference_(false),
|
| @@ -58,8 +58,14 @@ Variable::Variable(Scope* scope, const AstRawString* name, VariableMode mode,
|
| bool Variable::IsGlobalObjectProperty() const {
|
| // Temporaries are never global, they must always be allocated in the
|
| // activation frame.
|
| - return (IsDynamicVariableMode(mode_) ||
|
| - (IsDeclaredVariableMode(mode_) && !IsLexicalVariableMode(mode_))) &&
|
| + return IsDynamicVariableMode(mode_) || IsStaticGlobalObjectProperty();
|
| +}
|
| +
|
| +
|
| +bool Variable::IsStaticGlobalObjectProperty() const {
|
| + // Temporaries are never global, they must always be allocated in the
|
| + // activation frame.
|
| + return (IsDeclaredVariableMode(mode_) && !IsLexicalVariableMode(mode_)) &&
|
| scope_ != NULL && scope_->is_script_scope() && !is_this();
|
| }
|
|
|
|
|