Merge
This commit is contained in:
commit
57b48ea42a
@ -956,6 +956,7 @@ const Type *PhiNode::Value( PhaseTransform *phase ) const {
|
|||||||
}
|
}
|
||||||
if( jtkp && ttkp ) {
|
if( jtkp && ttkp ) {
|
||||||
if( jtkp->is_loaded() && jtkp->klass()->is_interface() &&
|
if( jtkp->is_loaded() && jtkp->klass()->is_interface() &&
|
||||||
|
!jtkp->klass_is_exact() && // Keep exact interface klass (6894807)
|
||||||
ttkp->is_loaded() && !ttkp->klass()->is_interface() ) {
|
ttkp->is_loaded() && !ttkp->klass()->is_interface() ) {
|
||||||
assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) ||
|
assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) ||
|
||||||
ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), "");
|
ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), "");
|
||||||
|
@ -2545,12 +2545,15 @@ const Type *TypeOopPtr::filter( const Type *kills ) const {
|
|||||||
ftip->is_loaded() && ftip->klass()->is_interface() &&
|
ftip->is_loaded() && ftip->klass()->is_interface() &&
|
||||||
ktip->is_loaded() && !ktip->klass()->is_interface()) {
|
ktip->is_loaded() && !ktip->klass()->is_interface()) {
|
||||||
// Happens in a CTW of rt.jar, 320-341, no extra flags
|
// Happens in a CTW of rt.jar, 320-341, no extra flags
|
||||||
|
assert(!ftip->klass_is_exact(), "interface could not be exact");
|
||||||
return ktip->cast_to_ptr_type(ftip->ptr());
|
return ktip->cast_to_ptr_type(ftip->ptr());
|
||||||
}
|
}
|
||||||
|
// Interface klass type could be exact in opposite to interface type,
|
||||||
|
// return it here instead of incorrect Constant ptr J/L/Object (6894807).
|
||||||
if (ftkp != NULL && ktkp != NULL &&
|
if (ftkp != NULL && ktkp != NULL &&
|
||||||
ftkp->is_loaded() && ftkp->klass()->is_interface() &&
|
ftkp->is_loaded() && ftkp->klass()->is_interface() &&
|
||||||
|
!ftkp->klass_is_exact() && // Keep exact interface klass
|
||||||
ktkp->is_loaded() && !ktkp->klass()->is_interface()) {
|
ktkp->is_loaded() && !ktkp->klass()->is_interface()) {
|
||||||
// Happens in a CTW of rt.jar, 320-341, no extra flags
|
|
||||||
return ktkp->cast_to_ptr_type(ftkp->ptr());
|
return ktkp->cast_to_ptr_type(ftkp->ptr());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user