8343699: [aarch64] Bug in MacroAssembler::klass_decode_mode()

Reviewed-by: adinn, coleenp
This commit is contained in:
Thomas Stuefe 2024-12-05 14:07:39 +00:00
parent 308357cba7
commit 456c71d1ff

View File

@ -5305,7 +5305,7 @@ MacroAssembler::KlassDecodeMode MacroAssembler::klass_decode_mode() {
if (operand_valid_for_logical_immediate(
/*is32*/false, (uint64_t)CompressedKlassPointers::base())) {
const size_t range = CompressedKlassPointers::klass_range_end() - CompressedKlassPointers::base();
const uint64_t range_mask = (1ULL << log2i(range)) - 1;
const uint64_t range_mask = right_n_bits(ceil_log2(range));
if (((uint64_t)CompressedKlassPointers::base() & range_mask) == 0) {
return (_klass_decode_mode = KlassDecodeXor);
}