RFR: 8276545: Fix handling of trap count overflow in Parse::Parse()
Dhamoder Nalla
duke at openjdk.org
Tue Sep 13 16:12:25 UTC 2022
The API trap_count(reason) returns (uint)-1 == 0xFFFFFFFF in case of trap count overflow,
trap_count_limit()) returns (jubyte)-1 == 0xFF which leads to the failure of overflow check
if (md_count == md->trap_count_limit()) (which is 0xFFFFFFFF == 0xFF).
uint md_count = md->trap_count(reason);
if (md_count != 0) {
**if (md_count == md->trap_count_limit())** // Trap count is overflown
Trap count value is computed as 0xFFFFFFFF + overflowcount (diff after 0xFF) which is wrong.
md_count += md->overflow_trap_count();
Fix:
Overflow check should be either of below
if (md_count >= md->trap_count_limit()) or if (md_count == (uint)-1)
Total trap count as
md_count = md->trap_count_limit() + md->overflow_trap_count();
Test: local JTReg test for hotspot_all group.
-------------
Commit messages:
- Fix handling of trap count overflow in Parse::Parse()
Changes: https://git.openjdk.org/jdk/pull/10187/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10187&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8276545
Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod
Patch: https://git.openjdk.org/jdk/pull/10187.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/10187/head:pull/10187
PR: https://git.openjdk.org/jdk/pull/10187
More information about the hotspot-compiler-dev
mailing list