Index: src/ic/ic.cc |
diff --git a/src/ic/ic.cc b/src/ic/ic.cc |
index 387c1cfc567495f0e731301e63e5800a67cdb70e..c73398f5a5716a92fcc52658253941e758a3b5bc 100644 |
--- a/src/ic/ic.cc |
+++ b/src/ic/ic.cc |
@@ -1671,6 +1671,12 @@ Handle<Code> StoreIC::CompileHandler(LookupIterator* lookup, |
TRACE_GENERIC_IC(isolate(), "StoreIC", "setter == 0"); |
break; |
} |
+ if (AccessorInfo::cast(*accessors)->is_special_data_property() && |
+ !lookup->HolderIsReceiverOrHiddenPrototype()) { |
+ TRACE_GENERIC_IC(isolate(), "StoreIC", |
+ "special data property in prototype chain"); |
+ break; |
+ } |
if (!ExecutableAccessorInfo::IsCompatibleReceiverMap(isolate(), info, |
receiver_map())) { |
TRACE_GENERIC_IC(isolate(), "StoreIC", "incompatible receiver type"); |