On Mon, 23 Sep 2024 16:35:18 GMT, Per Minborg <pminb...@openjdk.org> wrote:
>> This PR prevents sequence layout with padding to be used with the Linker. > > Per Minborg has updated the pull request incrementally with one additional > commit since the last revision: > > Reword doce I came with a new batch of weird layouts ` { // invalid after merge but logically valid Linker linker = Linker.nativeLinker(); var padding = MemoryLayout.paddingLayout(1); var sequence = MemoryLayout.sequenceLayout(3, padding); var struct = MemoryLayout.structLayout(JAVA_BYTE, sequence, JAVA_INT); var fd = FunctionDescriptor.of(struct, struct, struct); linker.downcallHandle(fd); } { Linker linker = Linker.nativeLinker(); var padding1 = MemoryLayout.paddingLayout(1); var padding2 = MemoryLayout.paddingLayout(2).withByteAlignment(2); var struct = MemoryLayout.structLayout(JAVA_BYTE, padding1, padding2, JAVA_INT); var fd = FunctionDescriptor.of(struct, struct, struct); linker.downcallHandle(fd); } { Linker linker = Linker.nativeLinker(); var struct16 = MemoryLayout.structLayout(JAVA_LONG, JAVA_LONG); var padding16 = MemoryLayout.paddingLayout(16).withByteAlignment(16); var union = MemoryLayout.unionLayout(struct16, padding16); var fd = FunctionDescriptor.of(union, union, union); linker.downcallHandle(fd); } { Linker linker = Linker.nativeLinker(); var struct32 = MemoryLayout.structLayout(MemoryLayout.sequenceLayout(4, JAVA_LONG)); var padding1 = MemoryLayout.paddingLayout(1); var padding2 = MemoryLayout.paddingLayout(2).withByteAlignment(2); var padding4 = MemoryLayout.paddingLayout(4).withByteAlignment(4); var padding8 = MemoryLayout.paddingLayout(8).withByteAlignment(8); var padding16 = MemoryLayout.paddingLayout(16).withByteAlignment(16); var padding32 = MemoryLayout.paddingLayout(32).withByteAlignment(32); var union = MemoryLayout.unionLayout(struct32, padding32); var struct = MemoryLayout.structLayout(JAVA_BYTE, padding1, padding2, padding4, padding8, padding16, union); var fd = FunctionDescriptor.of(struct, struct, struct); linker.downcallHandle(fd); } ` ------------- PR Comment: https://git.openjdk.org/jdk/pull/21041#issuecomment-2380451924