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