8387758: Oop verification wrong in StubGenerator::generate_generic_copy

Reviewed-by: shade, galder
This commit is contained in:
Thomas Stuefe 2026-07-07 09:39:32 +00:00
parent cb45fb887a
commit 63294ee8ba
3 changed files with 7 additions and 4 deletions

View File

@ -2568,7 +2568,7 @@ class StubGenerator: public StubCodeGenerator {
__ movw(scratch_length, length); // length (elements count, 32-bits value)
__ tbnz(scratch_length, 31, L_failed); // i.e. sign bit set
__ load_klass(scratch_src_klass, src);
__ load_narrow_klass(scratch_src_klass, src);
#ifdef ASSERT
// assert(src->klass() != nullptr);
{
@ -2583,6 +2583,7 @@ class StubGenerator: public StubCodeGenerator {
BLOCK_COMMENT("} assert klasses not null done");
}
#endif
__ decode_klass_not_null(scratch_src_klass, scratch_src_klass);
// Load layout helper (32-bits)
//

View File

@ -1889,7 +1889,7 @@ class StubGenerator: public StubCodeGenerator {
__ sext(scratch_length, length, 32); // length (elements count, 32-bits value)
__ bltz(scratch_length, L_failed);
__ load_klass(scratch_src_klass, src);
__ load_narrow_klass(scratch_src_klass, src);
#ifdef ASSERT
{
BLOCK_COMMENT("assert klasses not null {");
@ -1903,6 +1903,7 @@ class StubGenerator: public StubCodeGenerator {
BLOCK_COMMENT("} assert klasses not null done");
}
#endif
__ decode_klass_not_null(scratch_src_klass, t0);
// Load layout helper (32-bits)
//

View File

@ -3560,13 +3560,13 @@ address StubGenerator::generate_generic_copy(address byte_copy_entry, address sh
__ testl(r11_length, r11_length);
__ jccb(Assembler::negative, L_failed_0);
__ load_klass(r10_src_klass, src, rklass_tmp);
__ load_narrow_klass(r10_src_klass, src);
#ifdef ASSERT
// assert(src->klass() != nullptr);
{
BLOCK_COMMENT("assert klasses not null {");
Label L1, L2;
__ testptr(r10_src_klass, r10_src_klass);
__ testl(r10_src_klass, r10_src_klass);
__ jcc(Assembler::notZero, L2); // it is broken if klass is null
__ bind(L1);
__ stop("broken null klass");
@ -3577,6 +3577,7 @@ address StubGenerator::generate_generic_copy(address byte_copy_entry, address sh
BLOCK_COMMENT("} assert klasses not null done");
}
#endif
__ decode_klass_not_null(r10_src_klass, rklass_tmp);
// Load layout helper (32-bits)
//