src/share/vm/opto/escape.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6879362 Cdiff src/share/vm/opto/escape.cpp

src/share/vm/opto/escape.cpp

Print this page

        

*** 522,537 **** // // It could happened on subclass's branch (from the type profiling // inlining) which was not eliminated during parsing since the exactness // of the allocation type was not propagated to the subclass type check. // // Do nothing for such AddP node and don't process its users since // this code branch will go away. // if (!t->is_known_instance() && ! !t->klass()->equals(base_t->klass()) && ! t->klass()->is_subtype_of(base_t->klass())) { return false; // bail out } const TypeOopPtr *tinst = base_t->add_offset(t->offset())->is_oopptr(); // Do NOT remove the next call: ensure an new alias index is allocated --- 522,540 ---- // // It could happened on subclass's branch (from the type profiling // inlining) which was not eliminated during parsing since the exactness // of the allocation type was not propagated to the subclass type check. // + // Or the type 't' could be not related to 'base_t' at all. + // It could happened when CHA type is different from MDO type on a dead path + // (for example, from instanceof check) which is not collapsed during parsing. + // // Do nothing for such AddP node and don't process its users since // this code branch will go away. // if (!t->is_known_instance() && ! !base_t->klass()->is_subtype_of(t->klass())) { return false; // bail out } const TypeOopPtr *tinst = base_t->add_offset(t->offset())->is_oopptr(); // Do NOT remove the next call: ensure an new alias index is allocated
src/share/vm/opto/escape.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File