The logic for smearing the type checking slice into a single slice has incorrect bounds because of partial removal of sizeof(klassOopDesc)
uint off2 = offset - Klass::primary_supers_offset_in_bytes();
if( offset == Type::OffsetBot ||
off2 < Klass::primary_super_limit()*wordSize ) {
offset = sizeof(oopDesc) +Klass::secondary_super_cache_offset_in_bytes();
tj = tk = TypeKlassPtr::make( TypePtr::NotNull, tk->klass(), offset );
}
}
off2 should also be subtracting sizeof(klassOopDesc)
|