comparison src/share/vm/opto/parse1.cpp @ 14383:5ec7dace41a6

8027422: assert(_gvn.type(obj)->higher_equal(tjp)) failed: cast_up is no longer needed Summary: type methods shouldn't always operate on speculative part Reviewed-by: kvn, twisti
author roland
date Fri, 24 Jan 2014 09:31:53 +0100
parents de6a9e811145
children 45467c53f178 606acabe7b5c
comparison
equal deleted inserted replaced
14272:757ec609d8d5 14383:5ec7dace41a6
1647 // Phis of pointers cannot lose the basic pointer type. 1647 // Phis of pointers cannot lose the basic pointer type.
1648 debug_only(const Type* bt1 = phi->bottom_type()); 1648 debug_only(const Type* bt1 = phi->bottom_type());
1649 assert(bt1 != Type::BOTTOM, "should not be building conflict phis"); 1649 assert(bt1 != Type::BOTTOM, "should not be building conflict phis");
1650 map()->set_req(j, _gvn.transform_no_reclaim(phi)); 1650 map()->set_req(j, _gvn.transform_no_reclaim(phi));
1651 debug_only(const Type* bt2 = phi->bottom_type()); 1651 debug_only(const Type* bt2 = phi->bottom_type());
1652 assert(bt2->higher_equal(bt1), "must be consistent with type-flow"); 1652 assert(bt2->higher_equal_speculative(bt1), "must be consistent with type-flow");
1653 record_for_igvn(phi); 1653 record_for_igvn(phi);
1654 } 1654 }
1655 } 1655 }
1656 } // End of for all values to be merged 1656 } // End of for all values to be merged
1657 1657
2020 const TypeInstPtr *tp = value->bottom_type()->isa_instptr(); 2020 const TypeInstPtr *tp = value->bottom_type()->isa_instptr();
2021 if (tp && tp->klass()->is_loaded() && 2021 if (tp && tp->klass()->is_loaded() &&
2022 !tp->klass()->is_interface()) { 2022 !tp->klass()->is_interface()) {
2023 // sharpen the type eagerly; this eases certain assert checking 2023 // sharpen the type eagerly; this eases certain assert checking
2024 if (tp->higher_equal(TypeInstPtr::NOTNULL)) 2024 if (tp->higher_equal(TypeInstPtr::NOTNULL))
2025 tr = tr->join(TypeInstPtr::NOTNULL)->is_instptr(); 2025 tr = tr->join_speculative(TypeInstPtr::NOTNULL)->is_instptr();
2026 value = _gvn.transform(new (C) CheckCastPPNode(0,value,tr)); 2026 value = _gvn.transform(new (C) CheckCastPPNode(0,value,tr));
2027 } 2027 }
2028 } 2028 }
2029 phi->add_req(value); 2029 phi->add_req(value);
2030 } 2030 }