diff options
Diffstat (limited to 'deps/v8/src/ic/keyed-store-generic.cc')
-rw-r--r-- | deps/v8/src/ic/keyed-store-generic.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/deps/v8/src/ic/keyed-store-generic.cc b/deps/v8/src/ic/keyed-store-generic.cc index 29d666d620..19c7e47caa 100644 --- a/deps/v8/src/ic/keyed-store-generic.cc +++ b/deps/v8/src/ic/keyed-store-generic.cc @@ -697,10 +697,9 @@ void KeyedStoreGenericAssembler::OverwriteExistingFastProperty( BIND(&inobject); { - Node* field_offset = - IntPtrMul(IntPtrSub(LoadMapInstanceSize(object_map), - IntPtrSub(inobject_properties, field_index)), - IntPtrConstant(kPointerSize)); + Node* field_offset = TimesPointerSize(IntPtrAdd( + IntPtrSub(LoadMapInstanceSize(object_map), inobject_properties), + field_index)); Label tagged_rep(this), double_rep(this); Branch(Word32Equal(representation, Int32Constant(Representation::kDouble)), &double_rep, &tagged_rep); @@ -789,6 +788,7 @@ void KeyedStoreGenericAssembler::EmitGenericPropertyStore( BIND(&data_property); { + CheckForAssociatedProtector(p->name, slow); OverwriteExistingFastProperty(receiver, receiver_map, properties, descriptors, name_index, details, p->value, slow); @@ -822,6 +822,7 @@ void KeyedStoreGenericAssembler::EmitGenericPropertyStore( BIND(&overwrite); { + CheckForAssociatedProtector(p->name, slow); StoreValueByKeyIndex<NameDictionary>(properties, var_name_index.value(), p->value); Return(p->value); @@ -830,6 +831,7 @@ void KeyedStoreGenericAssembler::EmitGenericPropertyStore( BIND(¬_found); { + CheckForAssociatedProtector(p->name, slow); Label extensible(this); GotoIf(IsPrivateSymbol(p->name), &extensible); Node* bitfield2 = LoadMapBitField2(receiver_map); |