-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
P4
-
Affects Version/s: 26
-
Component/s: hotspot
-
aarch64
The early return is:
if (t == TypeInt::INT) {
return;
}
The following code then expects t._lo != min_jint || t._hi != max_jint:
if (lo != min_jint && hi != max_jint) {
subsw(rtmp, rval, lo);
br(Assembler::LT, L_failure);
subsw(rtmp, rval, hi);
br(Assembler::LE, L_success);
} else if (lo != min_jint) {
subsw(rtmp, rval, lo);
br(Assembler::GE, L_success);
} else if (hi != max_jint) {
subsw(rtmp, rval, hi);
br(Assembler::LE, L_success);
} else {
ShouldNotReachHere();
}
The early return condition should be:
if (lo == min_jint && hi == max_jint)
We should also verify the value with unsigned bounds and bits, but this issue only concerns with this potential crash.
if (t == TypeInt::INT) {
return;
}
The following code then expects t._lo != min_jint || t._hi != max_jint:
if (lo != min_jint && hi != max_jint) {
subsw(rtmp, rval, lo);
br(Assembler::LT, L_failure);
subsw(rtmp, rval, hi);
br(Assembler::LE, L_success);
} else if (lo != min_jint) {
subsw(rtmp, rval, lo);
br(Assembler::GE, L_success);
} else if (hi != max_jint) {
subsw(rtmp, rval, hi);
br(Assembler::LE, L_success);
} else {
ShouldNotReachHere();
}
The early return condition should be:
if (lo == min_jint && hi == max_jint)
We should also verify the value with unsigned bounds and bits, but this issue only concerns with this potential crash.
- links to
-
Review(master)
openjdk/jdk/28916