Index: src/x64/ic-x64.cc |
diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc |
index 15f410c1345e8bbd4dc7db6a46494fa357763ed6..8ccf7e38fb6e58c2b46e97c78786a40b371c9ab8 100644 |
--- a/src/x64/ic-x64.cc |
+++ b/src/x64/ic-x64.cc |
@@ -730,6 +730,11 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, |
__ testb(FieldOperand(r9, Map::kBitFieldOffset), |
Immediate(1 << Map::kIsAccessCheckNeeded)); |
__ j(not_zero, &slow_with_tagged_index); |
+ // Check that the receiver is not observed. Observed objects are always |
+ // handled by the runtime. |
+ __ testb(FieldOperand(r9, Map::kBitFieldOffset), |
+ Immediate(1 << Map::kIsObserved)); |
+ __ j(not_zero, &slow_with_tagged_index); |
// Check that the key is a smi. |
__ JumpIfNotSmi(rcx, &slow_with_tagged_index); |
__ SmiToInteger32(rcx, rcx); |