| 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 | 
|  |