| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index 6783694f79467f50c950330f8bed8fa3347610a3..9f3e9ba04545b1ae7e4613299dce74bab1507442 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -5122,23 +5122,23 @@ class HUnknownOSRValue V8_FINAL : public HTemplateInstruction<0> {
|
| class HLoadGlobalCell V8_FINAL : public HTemplateInstruction<0> {
|
| public:
|
| HLoadGlobalCell(Handle<Cell> cell, PropertyDetails details)
|
| - : cell_(cell), details_(details), unique_id_() {
|
| + : cell_(Unique<Cell>::CreateUninitialized(cell)), details_(details) {
|
| set_representation(Representation::Tagged());
|
| SetFlag(kUseGVN);
|
| SetGVNFlag(kDependsOnGlobalVars);
|
| }
|
|
|
| - Handle<Cell> cell() const { return cell_; }
|
| + Unique<Cell> cell() const { return cell_; }
|
| bool RequiresHoleCheck() const;
|
|
|
| virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
|
|
|
| virtual intptr_t Hashcode() V8_OVERRIDE {
|
| - return unique_id_.Hashcode();
|
| + return cell_.Hashcode();
|
| }
|
|
|
| virtual void FinalizeUniqueValueId() V8_OVERRIDE {
|
| - unique_id_ = UniqueValueId(cell_);
|
| + cell_ = Unique<Cell>(cell_.handle());
|
| }
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| @@ -5149,16 +5149,14 @@ class HLoadGlobalCell V8_FINAL : public HTemplateInstruction<0> {
|
|
|
| protected:
|
| virtual bool DataEquals(HValue* other) V8_OVERRIDE {
|
| - HLoadGlobalCell* b = HLoadGlobalCell::cast(other);
|
| - return unique_id_ == b->unique_id_;
|
| + return cell_ == HLoadGlobalCell::cast(other)->cell_;
|
| }
|
|
|
| private:
|
| virtual bool IsDeletable() const V8_OVERRIDE { return !RequiresHoleCheck(); }
|
|
|
| - Handle<Cell> cell_;
|
| + Unique<Cell> cell_;
|
| PropertyDetails details_;
|
| - UniqueValueId unique_id_;
|
| };
|
|
|
|
|
| @@ -5429,7 +5427,7 @@ class HStoreGlobalCell V8_FINAL : public HUnaryOperation {
|
| DECLARE_INSTRUCTION_FACTORY_P3(HStoreGlobalCell, HValue*,
|
| Handle<PropertyCell>, PropertyDetails);
|
|
|
| - Handle<PropertyCell> cell() const { return cell_; }
|
| + Unique<PropertyCell> cell() const { return cell_; }
|
| bool RequiresHoleCheck() {
|
| return !details_.IsDontDelete() || details_.IsReadOnly();
|
| }
|
| @@ -5437,6 +5435,10 @@ class HStoreGlobalCell V8_FINAL : public HUnaryOperation {
|
| return StoringValueNeedsWriteBarrier(value());
|
| }
|
|
|
| + virtual void FinalizeUniqueValueId() V8_OVERRIDE {
|
| + cell_ = Unique<PropertyCell>(cell_.handle());
|
| + }
|
| +
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::Tagged();
|
| }
|
| @@ -5449,12 +5451,12 @@ class HStoreGlobalCell V8_FINAL : public HUnaryOperation {
|
| Handle<PropertyCell> cell,
|
| PropertyDetails details)
|
| : HUnaryOperation(value),
|
| - cell_(cell),
|
| + cell_(Unique<PropertyCell>::CreateUninitialized(cell)),
|
| details_(details) {
|
| SetGVNFlag(kChangesGlobalVars);
|
| }
|
|
|
| - Handle<PropertyCell> cell_;
|
| + Unique<PropertyCell> cell_;
|
| PropertyDetails details_;
|
| };
|
|
|
|
|