On Thu, 17 Sep 2026 17:41:40 GMT, Ioi Lam <[email protected]> wrote: >> `FieldClosure` is used for iterating fields in an object. For Valhalla, it >> has been enhanced to handle fields that are inside inlined fields. However, >> the current implementation has two problems: >> >> [1] It type casts the address of an inlined field into an `oop` pointer. >> This is unsafe as many operations, such as getting the header of an `oop`, >> will not work with such an `oop` pointer: >> >> https://github.com/openjdk/jdk/blob/b1f975efa481bd5e20c1b7d58a87d0866df205e6/src/hotspot/share/runtime/fieldDescriptor.cpp#L216 >> >> [2] The parameter `base_offset` is used in many functions. Its meaning is >> unclear and inconsistent. >> >> https://github.com/openjdk/jdk/blob/b1f975efa481bd5e20c1b7d58a87d0866df205e6/src/hotspot/share/runtime/fieldDescriptor.cpp#L159 >> >> https://github.com/openjdk/jdk/blob/b1f975efa481bd5e20c1b7d58a87d0866df205e6/src/hotspot/share/oops/instanceKlass.hpp#L99-L101 >> >> This RFE refactors `FieldClosure` to avoid the above problems. >> `FieldClosure` now carries information about inlined fields. This >> information can be used by various field iteration code to simplify their >> operations. See `FieldClosure::inline_klass()` and >> `FieldClosure::inline_offset()`. >> >> As a result, users of `FieldClosure` and `FieldDescriptor()` no longer need >> to perform obscure arithmetics with `InlineKlass::payload_offset()`. >> >> This RFE also moves a few common operations into utility functions to avoid >> code duplication. >> >> Also: >> - Fixed a bug in `FlatArrayKlass::oop_print_elements_on()` in the handling >> of nullable elements. >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Ioi Lam has updated the pull request with a new target base due to a merge or > a rebase. The pull request now contains 15 commits: > > - Merge branch 'master' into clean-up-flat-field-iteration > - Merge branch 'master' into clean-up-flat-field-iteration > - @stefank comments > - @stefank and @matias9927 comments > - fixed whitespaces > - Restored ValuePayloadContext::klass() and added test case with abstract > value class > - clean up: ValuePayloadContext::_klass is used only in asserts > - Alternative > - @fparain comment: fixed null marker printing, added tests > - clean up names with new naming convention (see > https://github.com/openjdk/jdk/pull/32673) > - ... and 5 more: https://git.openjdk.org/jdk/compare/9b1e409b...b17b8539
Marked as reviewed by matsaave (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/32565#pullrequestreview-5239955468
