Index: src/hydrogen-check-elimination.cc |
diff --git a/src/hydrogen-check-elimination.cc b/src/hydrogen-check-elimination.cc |
index fb7812e3ce9334cc4603b0a49da468616e922a9a..bf549c5b137166baa1eb7aefbb00c60efbdbc87b 100644 |
--- a/src/hydrogen-check-elimination.cc |
+++ b/src/hydrogen-check-elimination.cc |
@@ -70,10 +70,6 @@ class HCheckTable : public ZoneObject { |
HTransitionElementsKind::cast(instr)); |
break; |
} |
- case HValue::kCheckMapValue: { |
- ReduceCheckMapValue(HCheckMapValue::cast(instr)); |
- break; |
- } |
case HValue::kCheckHeapObject: { |
ReduceCheckHeapObject(HCheckHeapObject::cast(instr)); |
break; |
@@ -361,39 +357,6 @@ class HCheckTable : public ZoneObject { |
INC_STAT(loads_); |
} |
- void ReduceCheckMapValue(HCheckMapValue* instr) { |
- if (!instr->map()->IsConstant()) return; // Nothing to learn. |
- |
- HValue* object = instr->value()->ActualValue(); |
- // Match a HCheckMapValue(object, HConstant(map)) |
- Unique<Map> map = MapConstant(instr->map()); |
- |
- HCheckTableEntry* entry = Find(object); |
- if (entry != NULL) { |
- if (entry->maps_->Contains(map)) { |
- if (entry->maps_->size() == 1) { |
- // Object is known to have exactly this map. |
- if (entry->check_ != NULL) { |
- instr->DeleteAndReplaceWith(entry->check_); |
- } else { |
- // Mark check as dead but leave it in the graph as a checkpoint for |
- // subsequent checks. |
- instr->SetFlag(HValue::kIsDead); |
- entry->check_ = instr; |
- } |
- INC_STAT(removed_); |
- } else { |
- // Only one map survives the check. |
- entry->maps_ = new(zone()) UniqueSet<Map>(map, zone()); |
- entry->check_ = instr; |
- } |
- } |
- } else { |
- // No prior information. |
- Insert(object, instr, map); |
- } |
- } |
- |
void ReduceCheckHeapObject(HCheckHeapObject* instr) { |
if (FindMaps(instr->value()->ActualValue()) != NULL) { |
// If the object has known maps, it's definitely a heap object. |
@@ -407,12 +370,12 @@ class HCheckTable : public ZoneObject { |
if (instr->has_transition()) { |
// This store transitions the object to a new map. |
Kill(object); |
- Insert(object, NULL, MapConstant(instr->transition())); |
+ Insert(object, NULL, HConstant::cast(instr->transition())->MapValue()); |
} else if (instr->access().IsMap()) { |
// This is a store directly to the map field of the object. |
Kill(object); |
if (!instr->value()->IsConstant()) return; |
- Insert(object, NULL, MapConstant(instr->value())); |
+ Insert(object, NULL, HConstant::cast(instr->value())->MapValue()); |
} else { |
// If the instruction changes maps, it should be handled above. |
CHECK(!instr->CheckChangesFlag(kMaps)); |
@@ -587,10 +550,6 @@ class HCheckTable : public ZoneObject { |
if (size_ < kMaxTrackedObjects) size_++; |
} |
- Unique<Map> MapConstant(HValue* value) { |
- return Unique<Map>::cast(HConstant::cast(value)->GetUnique()); |
- } |
- |
Zone* zone() const { return phase_->zone(); } |
friend class HCheckMapsEffects; |