| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 4256ba6a2de37c40570c739e920876975deaba53..4217666afa02b859f0055d4811bb17d41cdb04f2 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -3011,7 +3011,7 @@ MaybeHandle<Object> Object::SetProperty(LookupIterator* it,
|
| strict_mode);
|
|
|
| case LookupIterator::JSPROXY:
|
| - if (it->HolderIsReceiver()) {
|
| + if (it->HolderIsReceiverOrHiddenPrototype()) {
|
| return JSProxy::SetPropertyWithHandler(it->GetHolder<JSProxy>(),
|
| it->GetReceiver(), it->name(),
|
| value, strict_mode);
|
| @@ -3028,7 +3028,7 @@ MaybeHandle<Object> Object::SetProperty(LookupIterator* it,
|
| break;
|
|
|
| case LookupIterator::INTERCEPTOR:
|
| - if (it->HolderIsReceiver()) {
|
| + if (it->HolderIsReceiverOrHiddenPrototype()) {
|
| MaybeHandle<Object> maybe_result =
|
| JSObject::SetPropertyWithInterceptor(it, value);
|
| if (!maybe_result.is_null()) return maybe_result;
|
| @@ -3052,7 +3052,7 @@ MaybeHandle<Object> Object::SetProperty(LookupIterator* it,
|
| }
|
| switch (it->property_kind()) {
|
| case LookupIterator::ACCESSOR:
|
| - if (it->HolderIsReceiver() ||
|
| + if (it->HolderIsReceiverOrHiddenPrototype() ||
|
| !it->GetAccessors()->IsDeclaredAccessorInfo()) {
|
| return SetPropertyWithAccessor(it->GetReceiver(), it->name(),
|
| value, it->GetHolder<JSObject>(),
|
| @@ -3060,7 +3060,9 @@ MaybeHandle<Object> Object::SetProperty(LookupIterator* it,
|
| }
|
| break;
|
| case LookupIterator::DATA:
|
| - if (it->HolderIsReceiver()) return SetDataProperty(it, value);
|
| + if (it->HolderIsReceiverOrHiddenPrototype()) {
|
| + return SetDataProperty(it, value);
|
| + }
|
| }
|
| done = true;
|
| break;
|
| @@ -3092,7 +3094,7 @@ MaybeHandle<Object> Object::SetDataProperty(LookupIterator* it,
|
| Handle<JSObject> receiver = Handle<JSObject>::cast(it->GetReceiver());
|
|
|
| // Store on the holder which may be hidden behind the receiver.
|
| - ASSERT(it->HolderIsReceiver());
|
| + ASSERT(it->HolderIsReceiverOrHiddenPrototype());
|
|
|
| // Old value for the observation change record.
|
| // Fetch before transforming the object since the encoding may become
|
|
|