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(); |
} |