         { float-regs [ float-regs get pop swap MOVSD ] }
     } case ;
 
-
 M: x86.64 %unbox-small-struct ( c-type -- )
     ! Alien must be in param-reg-1.
-    "alien_offset" %vm-invoke-2nd-arg
+    param-reg-2 %mov-vm-ptr
+    "alien_offset" f %alien-invoke
     ! Move alien_offset() return value to R11 so that we don't
     ! clobber it.
     R11 RAX MOV

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

: struct-return@ ( n -- operand )

    "unnest_stacks" f %alien-invoke ;

M: x86.64 %prepare-alien-indirect ( -- )
    param-reg-1 %mov-vm-ptr
    "unbox_alien" f %alien-invoke
    RBP RAX MOV ;

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