Hello, This PR fixes an issue in `JVM_IHashCode` where we don't handle an exception occurring in the Java call to `ValueObjectMethods.valueObjectHashCode`. If an exception is thrown, we still proceed to install the (bad) hashcode that is based on a return value which is garbage data.
To fix this, we should make sure to return if there is a pending exception. @xmas92 came up with a smart approach to encapsulate the behavior of wrapping an exception in an internal error into a separate helper, which is implemented in this PR as well. I've adapted other similar places where we wrap exceptions like this as well. These use-cases are all Valhalla-specific, so makes sense to change here IMO. Testing: * Running Oracle's tier1-4 * Test reproducer that fails before (installing a bad hashcode), and succeeds with the changes in this PR (never installs a bad hashcode). --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - 8384081: [lworld] JVM_IHashCode caches hash after pending exception Changes: https://git.openjdk.org/valhalla/pull/2410/files Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2410&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8384081 Stats: 42 lines in 5 files changed: 15 ins; 21 del; 6 mod Patch: https://git.openjdk.org/valhalla/pull/2410.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2410/head:pull/2410 PR: https://git.openjdk.org/valhalla/pull/2410
