| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index ed4b065efad25123fe081ad40847db3b36213341..b69ce7952dd917a918beb470806486b1637e4708 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -6969,6 +6969,14 @@ class HStoreNamedField FINAL : public HTemplateInstruction<3> {
|
| SetChangesFlag(kMaps);
|
| }
|
|
|
| + void MarkReceiverAsCell() {
|
| + bit_field_ = ReceiverIsCellField::update(bit_field_, true);
|
| + }
|
| +
|
| + bool receiver_is_cell() const {
|
| + return ReceiverIsCellField::decode(bit_field_);
|
| + }
|
| +
|
| bool NeedsWriteBarrier() const {
|
| DCHECK(!field_representation().IsDouble() ||
|
| (FLAG_unbox_double_fields && access_.IsInobject()) ||
|
| @@ -6977,6 +6985,7 @@ class HStoreNamedField FINAL : public HTemplateInstruction<3> {
|
| if (field_representation().IsSmi()) return false;
|
| if (field_representation().IsInteger32()) return false;
|
| if (field_representation().IsExternal()) return false;
|
| + if (receiver_is_cell()) return false;
|
| return StoringValueNeedsWriteBarrier(value()) &&
|
| ReceiverObjectNeedsWriteBarrier(object(), value(), dominator());
|
| }
|
| @@ -7036,6 +7045,7 @@ class HStoreNamedField FINAL : public HTemplateInstruction<3> {
|
|
|
| class HasTransitionField : public BitField<bool, 0, 1> {};
|
| class StoreModeField : public BitField<StoreFieldOrKeyedMode, 1, 1> {};
|
| + class ReceiverIsCellField : public BitField<bool, 2, 1> {};
|
|
|
| HObjectAccess access_;
|
| HValue* dominator_;
|
|
|