RFR: 8361300: Document exceptions for Unsafe offset methods

Chen Liang liach at openjdk.org
Thu Jul 3 18:41:27 UTC 2025


On Thu, 26 Jun 2025 05:42:24 GMT, ExE Boss <duke at openjdk.org> wrote:

>> Unsafe throws IAE for misusing static vs instance fields, and it's revealed that AtomicXxxFieldUpdaters are using this mechanism to reject static fields. This is not a good practice, but we can at least document this so we don't accidentally introduce problems.
>
> I noticed that the native implementation of `Unsafe​::array⁠(BaseOffset​/IndexScale)` refers to the non‑existent class `java.lang.InvalidClassException` instead of `java.lang.IllegalArgumentException` (which results in `java.lang.NoClassDefFoundError` being thrown):
> https://github.com/openjdk/jdk/blob/1ca008fd02496dc33e2707c102560cae1690fba5/src/hotspot/share/prims/unsafe.cpp#L587-L594

I have added test cases to verify the current behaviors of Atomic field updaters and Unsafe memory address calculation methods, including untouched ones for arrays pointed out by @ExE-Boss. All of these are currently exposed through public APIs.

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

PR Comment: https://git.openjdk.org/jdk/pull/25945#issuecomment-3033199829


More information about the core-libs-dev mailing list