Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 5ba7fb19e0e364a3c30e570cf0c911812e01ae75..cea5dfa5868968bfccfd637439fe659dd473b305 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -93,7 +93,6 @@ class LChunkBuilder; |
V(CheckInstanceType) \ |
V(CheckMaps) \ |
V(CheckMapValue) \ |
- V(CheckPrototypeMaps) \ |
V(CheckSmi) \ |
V(ClampToUint8) \ |
V(ClassOfTestAndBranch) \ |
@@ -3126,87 +3125,6 @@ class HCheckHeapObject: public HUnaryOperation { |
}; |
-class HCheckPrototypeMaps: public HTemplateInstruction<0> { |
- public: |
- static HCheckPrototypeMaps* New(Zone* zone, |
- HValue* context, |
- Handle<JSObject> prototype, |
- Handle<JSObject> holder, |
- CompilationInfo* info) { |
- return new(zone) HCheckPrototypeMaps(prototype, holder, zone, info); |
- } |
- |
- ZoneList<Handle<JSObject> >* prototypes() { return &prototypes_; } |
- |
- ZoneList<Handle<Map> >* maps() { return &maps_; } |
- |
- DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps) |
- |
- virtual Representation RequiredInputRepresentation(int index) { |
- return Representation::None(); |
- } |
- |
- virtual void PrintDataTo(StringStream* stream); |
- |
- virtual intptr_t Hashcode() { |
- return first_prototype_unique_id_.Hashcode() * 17 + |
- last_prototype_unique_id_.Hashcode(); |
- } |
- |
- virtual void FinalizeUniqueValueId() { |
- first_prototype_unique_id_ = UniqueValueId(prototypes_.first()); |
- last_prototype_unique_id_ = UniqueValueId(prototypes_.last()); |
- } |
- |
- bool CanOmitPrototypeChecks() { return can_omit_prototype_maps_; } |
- |
- protected: |
- virtual bool DataEquals(HValue* other) { |
- HCheckPrototypeMaps* b = HCheckPrototypeMaps::cast(other); |
- return first_prototype_unique_id_ == b->first_prototype_unique_id_ && |
- last_prototype_unique_id_ == b->last_prototype_unique_id_; |
- } |
- |
- private: |
- HCheckPrototypeMaps(Handle<JSObject> prototype, |
- Handle<JSObject> holder, |
- Zone* zone, |
- CompilationInfo* info) |
- : prototypes_(2, zone), |
- maps_(2, zone), |
- first_prototype_unique_id_(), |
- last_prototype_unique_id_(), |
- can_omit_prototype_maps_(true) { |
- SetFlag(kUseGVN); |
- SetGVNFlag(kDependsOnMaps); |
- // Keep a list of all objects on the prototype chain up to the holder |
- // and the expected maps. |
- while (true) { |
- prototypes_.Add(prototype, zone); |
- Handle<Map> map(prototype->map()); |
- maps_.Add(map, zone); |
- can_omit_prototype_maps_ &= map->CanOmitPrototypeChecks(); |
- if (prototype.is_identical_to(holder)) break; |
- prototype = Handle<JSObject>(JSObject::cast(prototype->GetPrototype())); |
- } |
- if (can_omit_prototype_maps_) { |
- // Mark in-flight compilation as dependent on those maps. |
- for (int i = 0; i < maps()->length(); i++) { |
- Handle<Map> map = maps()->at(i); |
- map->AddDependentCompilationInfo(DependentCode::kPrototypeCheckGroup, |
- info); |
- } |
- } |
- } |
- |
- ZoneList<Handle<JSObject> > prototypes_; |
- ZoneList<Handle<Map> > maps_; |
- UniqueValueId first_prototype_unique_id_; |
- UniqueValueId last_prototype_unique_id_; |
- bool can_omit_prototype_maps_; |
-}; |
- |
- |
class InductionVariableData; |