8027422: assert(_gvn.type(obj)->higher_equal(tjp)) failed: cast_up is no longer needed

Type methods shouldn't always operate on speculative part

Reviewed-by: kvn, twisti
This commit is contained in:
Roland Westrelin 2014-01-24 09:31:53 +01:00
parent 91573b8695
commit c19a7e0fa3
18 changed files with 290 additions and 121 deletions

View file

@ -1649,7 +1649,7 @@ void Parse::merge_common(Parse::Block* target, int pnum) {
assert(bt1 != Type::BOTTOM, "should not be building conflict phis");
map()->set_req(j, _gvn.transform_no_reclaim(phi));
debug_only(const Type* bt2 = phi->bottom_type());
assert(bt2->higher_equal(bt1), "must be consistent with type-flow");
assert(bt2->higher_equal_speculative(bt1), "must be consistent with type-flow");
record_for_igvn(phi);
}
}
@ -2022,7 +2022,7 @@ void Parse::return_current(Node* value) {
!tp->klass()->is_interface()) {
// sharpen the type eagerly; this eases certain assert checking
if (tp->higher_equal(TypeInstPtr::NOTNULL))
tr = tr->join(TypeInstPtr::NOTNULL)->is_instptr();
tr = tr->join_speculative(TypeInstPtr::NOTNULL)->is_instptr();
value = _gvn.transform(new (C) CheckCastPPNode(0,value,tr));
}
}