On Fri, 28 Aug 2026 12:53:31 GMT, Johan Sjölen <[email protected]> wrote:
>> The fields declaring layout support for value classes are duplicated across >> the FieldLayoutBuilder, InlineKlass, and ClassFileParser. I suggest that we >> move all of these into a new class, called AvailableLayouts. >> >> This rids us of many duplicated lines of code, and makes keeping the names >> consistent easier (today, they are not consistent). >> >> For the design of `AvailableLayouts`, I decided on putting the size fields >> into an array which is indexed by casting `LayoutKind` into an `int`. This >> saves us code bloat, both in the repo, and also in our binaries. When I've >> looked at the generated code for the inlined callsites of >> `InlineKlass::layout_size_in_bytes`, the switch is compiled down into table >> dispatch. Now, we can just have it be a load from an object offset. This >> ought to be faster as well, as no prediction needs to take place. >> >> There's a lot of added `const` stuff in this PR as well, as issues with >> const-correctness came up during the refactoring. >> >> --------- >> - [X] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Johan Sjölen has updated the pull request incrementally with one additional > commit since the last revision: > > Self-review src/hotspot/share/oops/layoutKind.hpp line 136: > 134: // The different layouts available for a particular Klass > 135: struct LayoutDescriptions { > 136: constexpr static int MissingValue = -1; // Missing layouts are > assigned this value `MissingValue` is used in cases where the value is not missing, but there's simply no value. I'd suggest renaming it to `NoValue` src/hotspot/share/oops/layoutKind.hpp line 161: > 159: > 160: // Returns default value if missing > 161: int size_in_bytes_of(LayoutKind lk, int default_value = -1) const { Why is there a default_value argument? Looks dangerous to return a value when no value is available. An error should be detected instead. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/32276#discussion_r3895224150 PR Review Comment: https://git.openjdk.org/jdk/pull/32276#discussion_r3895237547
