| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index a6e974e49fa9b238a801d23bf5106ffd43cf4dec..9653eac8e6794459eae546c81865070d3d862ff1 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -5715,6 +5715,20 @@ inline bool ReceiverObjectNeedsWriteBarrier(HValue* object,
|
| }
|
|
|
|
|
| +inline PointersToHereCheck PointersToHereCheckForObject(HValue* object,
|
| + HValue* dominator) {
|
| + while (object->IsInnerAllocatedObject()) {
|
| + object = HInnerAllocatedObject::cast(object)->base_object();
|
| + }
|
| + if (object == dominator &&
|
| + object->IsAllocate() &&
|
| + HAllocate::cast(object)->IsNewSpaceAllocation()) {
|
| + return kPointersToHereAreAlwaysInteresting;
|
| + }
|
| + return kPointersToHereMaybeInteresting;
|
| +}
|
| +
|
| +
|
| class HStoreGlobalCell V8_FINAL : public HUnaryOperation {
|
| public:
|
| DECLARE_INSTRUCTION_FACTORY_P3(HStoreGlobalCell, HValue*,
|
| @@ -6732,6 +6746,10 @@ class HStoreNamedField V8_FINAL : public HTemplateInstruction<3> {
|
| return INLINE_SMI_CHECK;
|
| }
|
|
|
| + PointersToHereCheck PointersToHereCheckForValue() const {
|
| + return PointersToHereCheckForObject(value(), dominator());
|
| + }
|
| +
|
| Representation field_representation() const {
|
| return access_.representation();
|
| }
|
| @@ -6890,9 +6908,9 @@ class HStoreKeyed V8_FINAL
|
| return Representation::None();
|
| }
|
|
|
| - HValue* elements() { return OperandAt(0); }
|
| - HValue* key() { return OperandAt(1); }
|
| - HValue* value() { return OperandAt(2); }
|
| + HValue* elements() const { return OperandAt(0); }
|
| + HValue* key() const { return OperandAt(1); }
|
| + HValue* value() const { return OperandAt(2); }
|
| bool value_is_smi() const {
|
| return IsFastSmiElementsKind(elements_kind_);
|
| }
|
| @@ -6936,6 +6954,10 @@ class HStoreKeyed V8_FINAL
|
| }
|
| }
|
|
|
| + PointersToHereCheck PointersToHereCheckForValue() const {
|
| + return PointersToHereCheckForObject(value(), dominator());
|
| + }
|
| +
|
| bool NeedsCanonicalization();
|
|
|
| virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
|
|