Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2759.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2759 Author: eem Time: 31 May 2020, 4:30:04.25407 pm UUID: 830cf133-03ef-4a4e-abbb-856c29f8d4a0 Ancestors: VMMaker.oscog-eem.2758
The minimum alignment of a structure should be determined by a structure that contains an element with minimal alignment requirements, not maximal ones.
=============== Diff against VMMaker.oscog-eem.2758 ===============
Item was changed: ----- Method: AlignmentStructType class>>printTypedefOn: (in category 'code generation') ----- printTypedefOn: aStream + #('Byte' 'Short' 'Int' 'LongLong' 'Float' 'Double') + with: #(#char #short #int #'long long' #float #double) do: + [:structName :type| + aStream + nextPutAll: 'typedef struct { char pad_to_misalgnment; '; + nextPutAll: type; + nextPutAll: ' element; } struct'; + nextPutAll: structName; + nextPut: $;; cr; cr]. - | union | - union := String streamContents: - [:unionStream| - #('Byte' 'Short' 'Int' 'LongLong' 'Float' 'Double') - with: #(#char #short #int #'long long' #float #double) do: - [:structName :type| - aStream - nextPutAll: 'typedef struct { char pad_to_misalgnment; '; - nextPutAll: type; - nextPutAll: ' element; } struct'; - nextPutAll: structName; - nextPut: $;; cr; cr. - unionStream crtab: 3; nextPutAll: type; space; nextPutAll: structName; nextPut: $;]]. aStream + nextPutAll: 'typedef struct { char pad_to_misalgnment; struct {char c; } element; } structStruct;'; + cr; cr! - nextPutAll: 'typedef struct { char pad_to_misalgnment;'; - crtab: 2; - nextPutAll: 'union {'; - nextPutAll: union; - crtab: 2; - nextPutAll: '} element; } structStruct;'!
vm-dev@lists.squeakfoundation.org