Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 5dc3e201ae6f68d814b31d007385c0fef75fa4c3..ba424c2984610c81cbabf4f457d9af18a25d88e1 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -7183,9 +7183,16 @@ Maybe<bool> JSReceiver::HasProperty(Handle<JSReceiver> object, |
Maybe<bool> JSReceiver::HasOwnProperty(Handle<JSReceiver> object, |
Handle<Name> name) { |
- LookupIterator it = LookupIterator::PropertyOrElement( |
- object->GetIsolate(), object, name, LookupIterator::HIDDEN); |
- return HasProperty(&it); |
+ if (object->IsJSObject()) { // Shortcut |
+ LookupIterator it = LookupIterator::PropertyOrElement( |
+ object->GetIsolate(), object, name, LookupIterator::HIDDEN); |
+ return HasProperty(&it); |
+ } |
+ |
+ Maybe<PropertyAttributes> attributes = |
+ JSReceiver::GetOwnPropertyAttributes(object, name); |
+ MAYBE_RETURN(attributes, Nothing<bool>()); |
+ return Just(attributes.FromJust() != ABSENT); |
} |
@@ -7211,14 +7218,6 @@ Maybe<bool> JSReceiver::HasElement(Handle<JSReceiver> object, uint32_t index) { |
} |
-Maybe<bool> JSReceiver::HasOwnElement(Handle<JSReceiver> object, |
- uint32_t index) { |
- LookupIterator it(object->GetIsolate(), object, index, |
- LookupIterator::HIDDEN); |
- return HasProperty(&it); |
-} |
- |
- |
Maybe<PropertyAttributes> JSReceiver::GetElementAttributes( |
Handle<JSReceiver> object, uint32_t index) { |
Isolate* isolate = object->GetIsolate(); |