[lworld] Integrated: 8341759: [lworld] JIT support for nullable, atomic, flat fields

Tobias Hartmann thartmann at openjdk.org
Thu Jan 30 13:04:07 UTC 2025


On Mon, 16 Dec 2024 13:34:44 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:

> This change adds support for nullable, atomic, flat fields in C1 and C2 on AArch64 and x64.
> 
> This includes:
> - Null marker support in fields and in the calling convention (which currently mirrors the field layout). The main complexity comes from the fact that null markers are no real fields and therefore need to be special cased in quite a few places.
> - Converting a value object to / from a payload. This required significant changes, especially in C2 where we need to emit shift/mask operations for packing/unpacking field values to/from the scalar representation. C2 did not like loading a long value and suddenly assuming that a part of this long is now an oop, and we also need to be careful that this conversion does not float below a safepoint because then the GC would not know about the oop.
> - GC barrier changes to support writing a payload that includes (narrow) oops. This was challenging due to G1 late barrier expansion that expects that there is a 1-1 relation between stores and pre-/post-barriers but now we might require two barriers for an atomic store to a flat field with two 32-bit compressed oops. The current implementation is rather hacky and should be re-visited later.
> - Lots of new tests and some problem listing of existing / independent issues to get compiler stress testing clean.
> 
> Follow-up work will be done when implementing support for nullable, atomic, flat arrays with [JDK-8341767](https://bugs.openjdk.org/browse/JDK-8341767).
> 
> Thanks,
> Tobias

This pull request has now been integrated.

Changeset: aef1e5b7
Author:    Tobias Hartmann <thartmann at openjdk.org>
URL:       https://git.openjdk.org/valhalla/commit/aef1e5b7e3177f63bbb626cafc57f3a611459d8c
Stats:     2314 lines in 65 files changed: 2031 ins; 72 del; 211 mod

8341759: [lworld] JIT support for nullable, atomic, flat fields

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

PR: https://git.openjdk.org/valhalla/pull/1318


More information about the valhalla-dev mailing list