< prev index next >
src/hotspot/share/opto/compile.cpp
Print this page
@@ -3431,14 +3431,17 @@
// Check to see if address types have grounded out somehow.
const TypeInstPtr *tp = mem->in(MemNode::Address)->bottom_type()->isa_instptr();
assert( !tp || oop_offset_is_sane(tp), "" );
}
#endif
- if (EnableValhalla && (nop == Op_LoadKlass || nop == Op_LoadNKlass)) {
+ if (EnableValhalla &&
+ ((nop == Op_LoadKlass && ((LoadKlassNode*)n)->clear_prop_bits()) ||
+ (nop == Op_LoadNKlass && ((LoadNKlassNode*)n)->clear_prop_bits()))) {
const TypeKlassPtr* tk = n->bottom_type()->make_ptr()->is_klassptr();
assert(!tk->klass_is_exact(), "should have been folded");
- if (tk->klass()->can_be_value_array_klass() && n->as_Mem()->adr_type()->offset() == oopDesc::klass_offset_in_bytes()) {
+ assert(n->as_Mem()->adr_type()->offset() == oopDesc::klass_offset_in_bytes(), "unexpected LoadKlass");
+ if (tk->klass()->can_be_value_array_klass()) {
// Array load klass needs to filter out property bits (but not
// GetNullFreePropertyNode or GetFlattenedPropertyNode which
// needs to extract the storage property bits)
uint last = unique();
Node* pointer = NULL;
< prev index next >