Field write extends the existing TY_TAGGED branch with an is_global arm: LEAQ name(SB),CX after cgexpr (no AX/BX clobber), then MOVQ into slot+foff+0 (tag) and slot+foff+8 (value, plus +16 for str- typed variants). Field read now treats tagged fields specially — load AX=tag, DX=val0, CX=val1 (when union >16B), mirroring the tagged-return ABI that let-init and match dispatch already expect. Previously the scalar-load path read 8B into AX and left DX/CX with junk, which silently broke local tagged-field reads too.
128 KiB
128 KiB