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