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

Reply via email to