Index: src/arm/ic-arm.cc |
diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc |
index 025a590f0cba202b9636b88d03626deea2e371b6..8c41224686072bd1f0e08856fb794f533e8878d3 100644 |
--- a/src/arm/ic-arm.cc |
+++ b/src/arm/ic-arm.cc |
@@ -1432,11 +1432,12 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, |
__ JumpIfSmi(receiver, &slow); |
// Get the map of the object. |
__ ldr(receiver_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); |
- // Check that the receiver does not require access checks. We need |
- // to do this because this generic stub does not perform map checks. |
+ // Check that the receiver does not require access checks and is not observed. |
+ // The generic stub does not perform map checks or handle observed objects. |
__ ldrb(ip, FieldMemOperand(receiver_map, Map::kBitFieldOffset)); |
- __ tst(ip, Operand(1 << Map::kIsAccessCheckNeeded)); |
+ __ tst(ip, Operand(1 << Map::kIsAccessCheckNeeded | 1 << Map::kIsObserved); |
__ b(ne, &slow); |
+ |
// Check if the object is a JS array or not. |
__ ldrb(r4, FieldMemOperand(receiver_map, Map::kInstanceTypeOffset)); |
__ cmp(r4, Operand(JS_ARRAY_TYPE)); |