Index: src/ia32/ic-ia32.cc |
diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc |
index f8e4ea53d0f78cb32f63e86b30343f85c857f42c..22c51977705791e494c976da776b2bd1b34fd1ca 100644 |
--- a/src/ia32/ic-ia32.cc |
+++ b/src/ia32/ic-ia32.cc |
@@ -856,6 +856,11 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, |
__ test_b(FieldOperand(edi, Map::kBitFieldOffset), |
1 << Map::kIsAccessCheckNeeded); |
__ j(not_zero, &slow); |
+ // Check that the receiver is not observed. Observed objects are always |
+ // handled by the runtime. |
+ __ test_b(FieldOperand(edi, Map::kBitFieldOffset), |
+ 1 << Map::kIsObserved); |
+ __ j(not_zero, &slow); |
// Check that the key is a smi. |
__ JumpIfNotSmi(ecx, &slow); |
__ CmpInstanceType(edi, JS_ARRAY_TYPE); |