R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/
22803002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16146
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
if (mapcheck->value() != allocate) continue;
// TODO(mstarzinger): This approach breaks if the tracked map value
// is not a HConstant. Find a repro test case and fix this.
+ for (HUseIterator it(mapcheck->uses()); !it.Done(); it.Advance()) {
+ if (!it.value()->IsLoadNamedField()) continue;
+ HLoadNamedField* load = HLoadNamedField::cast(it.value());
+ ASSERT(load->typecheck() == mapcheck);
+ load->ClearTypeCheck();
+ }
ASSERT(mapcheck->HasNoUses());
+
mapcheck->DeleteAndReplaceWith(NULL);
break;
}
}
bool HasTypeCheck() const { return OperandAt(0) != OperandAt(1); }
+ void ClearTypeCheck() { SetOperandAt(1, object()); }
HObjectAccess access() const { return access_; }
Representation field_representation() const {
return access_.representation();