Index: src/property.h |
=================================================================== |
--- src/property.h (revision 2285) |
+++ src/property.h (working copy) |
@@ -230,6 +230,7 @@ |
bool IsReadOnly() { return details_.IsReadOnly(); } |
bool IsDontDelete() { return details_.IsDontDelete(); } |
bool IsDontEnum() { return details_.IsDontEnum(); } |
+ bool IsDeleted() { return details_.IsDeleted(); } |
bool IsValid() { return lookup_type_ != NOT_FOUND; } |
bool IsNotFound() { return lookup_type_ == NOT_FOUND; } |
@@ -256,8 +257,14 @@ |
switch (type()) { |
case FIELD: |
return holder()->FastPropertyAt(GetFieldIndex()); |
- case NORMAL: |
- return holder()->property_dictionary()->ValueAt(GetDictionaryEntry()); |
+ case NORMAL: { |
+ Object* value; |
+ value = holder()->property_dictionary()->ValueAt(GetDictionaryEntry()); |
+ if (holder()->IsJSGlobalObject()) { |
+ value = JSGlobalPropertyCell::cast(value)->value(); |
+ } |
+ return value; |
+ } |
case CONSTANT_FUNCTION: |
return GetConstantFunction(); |
default: |
@@ -306,7 +313,7 @@ |
} |
// In the dictionary case, the data is held in the value field. |
ASSERT(lookup_type_ == DICTIONARY_TYPE); |
- return holder()->property_dictionary()->ValueAt(GetDictionaryEntry()); |
+ return holder()->GetNormalizedProperty(this); |
} |
private: |