On Thu, 26 Mar 2026 02:02:54 GMT, Yasumasa Suenaga <[email protected]> wrote:
> In #30392, we found out some impl classes in FFM are marked as value based > class, but they do not have `@ValueBased`. > I grep'ed JDK sources with 'ValueBased.html' which we expect that the word in > Javadoc on value based class, and I tracked it to final implementation class. > `final` classes in following list should have `@ValueBased`. > > > > java.base/share/classes/java/lang/foreign/FunctionDescriptor.java > public sealed interface FunctionDescriptor permits FunctionDescriptorImpl > public final class FunctionDescriptorImpl implements FunctionDescriptor > > java.base/share/classes/java/lang/foreign/MemoryLayout.java > public sealed interface MemoryLayout permits SequenceLayout, GroupLayout, > PaddingLayout, ValueLayout > public sealed interface SequenceLayout extends MemoryLayout permits > SequenceLayoutImpl > public final class SequenceLayoutImpl extends > AbstractLayout<SequenceLayoutImpl> implements SequenceLayout > public sealed interface GroupLayout extends MemoryLayout permits > StructLayout, UnionLayout > public sealed interface StructLayout extends GroupLayout permits > StructLayoutImpl > public final class StructLayoutImpl extends > AbstractGroupLayout<StructLayoutImpl> implements StructLayout > public sealed interface UnionLayout extends GroupLayout permits > UnionLayoutImpl > public final class UnionLayoutImpl extends > AbstractGroupLayout<UnionLayoutImpl> implements UnionLayout > public sealed interface PaddingLayout extends MemoryLayout permits > PaddingLayoutImpl > public final class PaddingLayoutImpl extends > AbstractLayout<PaddingLayoutImpl> implements PaddingLayout > public sealed interface ValueLayout extends MemoryLayout permits > ValueLayout.OfBoolean, ValueLayout.OfByte, ValueLayout.OfChar, > ValueLayout.OfShort, ValueLayout.OfInt, ValueLayout.OfFloat, > ValueLayout.OfLong, ValueLayout.OfDouble, AddressLayout > sealed interface OfBoolean extends ValueLayout permits > ValueLayouts.OfBooleanImpl > public static final class OfBooleanImpl extends > AbstractValueLayout<OfBooleanImpl> implements ValueLayout.OfBoolean > sealed interface OfByte extends ValueLayout permits > ValueLayouts.OfByteImpl > public static final class OfByteImpl extends > AbstractValueLayout<OfByteImpl> implements ValueLayout.OfByte > sealed interface OfChar extends ValueLayout permits > ValueLayouts.OfCharImpl > public static final class OfCharImpl extends > AbstractValueLayout<OfCharImpl> implements ValueLayout.OfChar > sealed interface OfSho... I haven't yet got any more feedbacks for this PR and #30481 . Do you have any comments? This change could affect the specification, thus I agree that it should be careful I think. Based on this, I think we can have following options: 1. Make changes for `MemoryLayout`, `MemorySegment`, `ValueLayouts` only, then `Linker` and `FileDiscriptor` are handled in #30481 . 2. Make changes for `MemoryLayout`, `MemorySegment`, `ValueLayouts`, `FileDiscriptor` in this PR first, then `Linker` and `FileDiscriptor` are handled in #30481 . 3. Go through this PR, and unclassify `@ValueBased` from `Linker` and `FileDescriptor` as another ticket if need (it can be #30481 I think.) Comments are welcome. ------------- PR Comment: https://git.openjdk.org/jdk/pull/30443#issuecomment-4264446467
