On Fri, 30 Jan 2026 15:29:17 GMT, Joel Sikström <[email protected]> wrote:
> Hello,
>
> Right now it's not clear that the dummy field that is injected into empty
> inline klasses can be/is reused for the null-marker when looking at the
> printed layout from -XX:+PrintInlineLayout. I suggest we enhance this print
> to indicate if the dummy field has been reused for the null-marker.
>
> I've tested that the added comment in the print is there when nullability is
> turned on (default), and not there when turned off
> (`-XX:-UseNullableValueFlattening -XX:-UseNullableNonAtomicValueFlattening`).
>
>
> Before:
> Instance fields:
> @0 RESERVED 12/-
> @12 REGULAR 1/1 ".empty" B
>
> After:
> Instance fields:
> @0 RESERVED 12/-
> @12 REGULAR 1/1 ".empty" B (reused as null-marker)
>
>
> Testing:
> * GHA
> * Oracle's tier1
src/hotspot/share/classfile/fieldLayoutBuilder.cpp line 1587:
> 1585: _layout->print(&st, false, _super_klass, _inline_layout_info_array,
> dummy_field_is_reused_as_null_marker);
> 1586: st.print_cr("Static fields:");
> 1587: _static_layout->print(&st, true, nullptr,
> _inline_layout_info_array, dummy_field_is_reused_as_null_marker);
Does the static layout ever have a dummy field? I would have anticipated this
to be simply `false`.
-------------
PR Review Comment:
https://git.openjdk.org/valhalla/pull/2001#discussion_r2748145018