Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index a8970584d8b3e206d6dc0abc89084d8046b5887e..ba460cf421f73400df915253194b4560ad60d40c 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -2978,12 +2978,18 @@ MaybeObject* JSObject::SetPropertyForResult(LookupResult* result, |
// Preserve the attributes of this existing property. |
attributes = result->GetAttributes(); |
return ConvertDescriptorToField(name, value, attributes); |
- case CALLBACKS: |
- return SetPropertyWithCallback(result->GetCallbackObject(), |
+ case CALLBACKS: { |
+ Object* callback_object = result->GetCallbackObject(); |
+ if (callback_object->IsAccessorPair() && |
+ !AccessorPair::cast(callback_object)->ContainsAccessor()) { |
+ return ConvertDescriptorToField(name, value, attributes); |
+ } |
+ return SetPropertyWithCallback(callback_object, |
name, |
value, |
result->holder(), |
strict_mode); |
+ } |
case INTERCEPTOR: |
return SetPropertyWithInterceptor(name, value, attributes, strict_mode); |
case CONSTANT_TRANSITION: { |