This PR addresses intermittent failures in jtreg GC stress tests. The failures 
occur under these conditions:
1. Using a libgraal build with assertions enabled as the top tier JIT compiler. 
Such a libgraal build will cause a VM exit if an assertion or GraalError occurs 
in a compiler thread (as this catches more errors in testing).
2. A libgraal compiler thread makes a call into the VM (via `CompilerToVM`) to 
a routine that performs a HotSpot heap allocation that fails.
3. The resulting OOME is wrapped in a GraalError, causing the VM to exit as 
described in 1.

An OOME thrown in these specific conditions should not exit the VM as it not 
related to an OOME in the app or test. Instead, the failure should be treated 
as a bailout and the libgraal compiler should continue.

To accomplish this, libgraal needs to be able to distinguish a GraalError 
caused by an OOME. This PR modifies the exception translation code to make this 
possible.

-------------

Commit messages:
 - improved exception translation between HotSpot and libgraal heaps

Changes: https://git.openjdk.org/jdk/pull/20083/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20083&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8335553
  Stats: 84 lines in 5 files changed: 50 ins; 22 del; 12 mod
  Patch: https://git.openjdk.org/jdk/pull/20083.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20083/head:pull/20083

PR: https://git.openjdk.org/jdk/pull/20083

Reply via email to