OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 4716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4727 return hash; | 4727 return hash; |
4728 } | 4728 } |
4729 | 4729 |
4730 | 4730 |
4731 Object* JSObject::GetHiddenProperty(Name* key) { | 4731 Object* JSObject::GetHiddenProperty(Name* key) { |
4732 ASSERT(key->IsUniqueName()); | 4732 ASSERT(key->IsUniqueName()); |
4733 if (IsJSGlobalProxy()) { | 4733 if (IsJSGlobalProxy()) { |
4734 // For a proxy, use the prototype as target object. | 4734 // For a proxy, use the prototype as target object. |
4735 Object* proxy_parent = GetPrototype(); | 4735 Object* proxy_parent = GetPrototype(); |
4736 // If the proxy is detached, return undefined. | 4736 // If the proxy is detached, return undefined. |
4737 if (proxy_parent->IsNull()) return GetHeap()->undefined_value(); | 4737 if (proxy_parent->IsNull()) return GetHeap()->the_hole_value(); |
4738 ASSERT(proxy_parent->IsJSGlobalObject()); | 4738 ASSERT(proxy_parent->IsJSGlobalObject()); |
4739 return JSObject::cast(proxy_parent)->GetHiddenProperty(key); | 4739 return JSObject::cast(proxy_parent)->GetHiddenProperty(key); |
4740 } | 4740 } |
4741 ASSERT(!IsJSGlobalProxy()); | 4741 ASSERT(!IsJSGlobalProxy()); |
4742 MaybeObject* hidden_lookup = | 4742 MaybeObject* hidden_lookup = |
4743 GetHiddenPropertiesHashTable(ONLY_RETURN_INLINE_VALUE); | 4743 GetHiddenPropertiesHashTable(ONLY_RETURN_INLINE_VALUE); |
4744 Object* inline_value = hidden_lookup->ToObjectUnchecked(); | 4744 Object* inline_value = hidden_lookup->ToObjectUnchecked(); |
4745 | 4745 |
4746 if (inline_value->IsSmi()) { | 4746 if (inline_value->IsSmi()) { |
4747 // Handle inline-stored identity hash. | 4747 // Handle inline-stored identity hash. |
4748 if (key == GetHeap()->identity_hash_string()) { | 4748 if (key == GetHeap()->identity_hash_string()) { |
4749 return inline_value; | 4749 return inline_value; |
4750 } else { | 4750 } else { |
4751 return GetHeap()->undefined_value(); | 4751 return GetHeap()->the_hole_value(); |
4752 } | 4752 } |
4753 } | 4753 } |
4754 | 4754 |
4755 if (inline_value->IsUndefined()) return GetHeap()->undefined_value(); | 4755 if (inline_value->IsUndefined()) return GetHeap()->the_hole_value(); |
4756 | 4756 |
4757 ObjectHashTable* hashtable = ObjectHashTable::cast(inline_value); | 4757 ObjectHashTable* hashtable = ObjectHashTable::cast(inline_value); |
4758 Object* entry = hashtable->Lookup(key); | 4758 Object* entry = hashtable->Lookup(key); |
4759 if (entry->IsTheHole()) return GetHeap()->undefined_value(); | |
4760 return entry; | 4759 return entry; |
4761 } | 4760 } |
4762 | 4761 |
4763 | 4762 |
4764 Handle<Object> JSObject::SetHiddenProperty(Handle<JSObject> obj, | 4763 Handle<Object> JSObject::SetHiddenProperty(Handle<JSObject> obj, |
4765 Handle<Name> key, | 4764 Handle<Name> key, |
4766 Handle<Object> value) { | 4765 Handle<Object> value) { |
4767 CALL_HEAP_FUNCTION(obj->GetIsolate(), | 4766 CALL_HEAP_FUNCTION(obj->GetIsolate(), |
4768 obj->SetHiddenProperty(*key, *value), | 4767 obj->SetHiddenProperty(*key, *value), |
4769 Object); | 4768 Object); |
(...skipping 10985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15755 return static_cast<Type*>(type_raw()); | 15754 return static_cast<Type*>(type_raw()); |
15756 } | 15755 } |
15757 | 15756 |
15758 | 15757 |
15759 void PropertyCell::set_type(Type* type, WriteBarrierMode ignored) { | 15758 void PropertyCell::set_type(Type* type, WriteBarrierMode ignored) { |
15760 set_type_raw(type, ignored); | 15759 set_type_raw(type, ignored); |
15761 } | 15760 } |
15762 | 15761 |
15763 | 15762 |
15764 } } // namespace v8::internal | 15763 } } // namespace v8::internal |
OLD | NEW |