mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
6716441: error in meet with +DoEscapeAnalysis
Set instance_id to InstanceBot for InstPtr->meet(AryPtr) when types are not related. Reviewed-by: jrose, never
This commit is contained in:
parent
873da1efe8
commit
4213e62fb7
11 changed files with 1088 additions and 139 deletions
|
@ -1069,7 +1069,7 @@ const TypePtr *Compile::flatten_alias_type( const TypePtr *tj ) const {
|
|||
// No constant oop pointers (such as Strings); they alias with
|
||||
// unknown strings.
|
||||
tj = to = TypeInstPtr::make(TypePtr::BotPTR,to->klass(),false,0,offset);
|
||||
} else if( to->is_instance_field() ) {
|
||||
} else if( to->is_known_instance_field() ) {
|
||||
tj = to; // Keep NotNull and klass_is_exact for instance type
|
||||
} else if( ptr == TypePtr::NotNull || to->klass_is_exact() ) {
|
||||
// During the 2nd round of IterGVN, NotNull castings are removed.
|
||||
|
@ -1190,8 +1190,8 @@ void Compile::AliasType::Init(int i, const TypePtr* at) {
|
|||
_field = NULL;
|
||||
_is_rewritable = true; // default
|
||||
const TypeOopPtr *atoop = (at != NULL) ? at->isa_oopptr() : NULL;
|
||||
if (atoop != NULL && atoop->is_instance()) {
|
||||
const TypeOopPtr *gt = atoop->cast_to_instance(TypeOopPtr::UNKNOWN_INSTANCE);
|
||||
if (atoop != NULL && atoop->is_known_instance()) {
|
||||
const TypeOopPtr *gt = atoop->cast_to_instance_id(TypeOopPtr::InstanceBot);
|
||||
_general_index = Compile::current()->get_alias_index(gt);
|
||||
} else {
|
||||
_general_index = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue