     param-reg-2 n param@ LEA
     ! Load structure size into param-reg-3
     param-reg-3 c-type heap-size MOV
+    param-reg-4 %mov-vm-ptr
     ! Copy the struct to the C stack
-    "to_value_struct" %vm-invoke-4th-arg ;
+    "to_value_struct" f %alien-invoke ;
 
 : load-return-value ( rep -- )
     [ [ 0 ] dip reg-class-of param-reg ]

    "unnest_stacks" f %alien-invoke ;

M: x86.64 %prepare-alien-indirect ( -- )
    "unbox_alien" %vm-invoke-1st-arg
    RBP RAX MOV ;

M: x86.64 %alien-indirect ( -- )

        [ param-reg-3 swap heap-size MOV ] bi
        param-reg-1 0 box-struct-field@ MOV
        param-reg-2 1 box-struct-field@ MOV
        param-reg-4 %mov-vm-ptr
        "box_small_struct" f %alien-invoke
    ] with-return-regs ;

: struct-return@ ( n -- operand )
