         [ alien-parameters parameter-sizes drop >>params ] bi
         dup [ params>> ] [ return>> ] bi + >>size ;
 
-: alien-stack-frame ( node -- )
-    params>> <alien-stack-frame> ##stack-frame ;
-
 : emit-alien-node ( node quot -- next )
-    [ drop alien-stack-frame ]
-    [ [ params>> ] dip call ] 2bi
+    [ params>> ] dip
+    [ drop <alien-stack-frame> ##stack-frame ] [ call ] 2bi
     iterate-next ; inline
 
 M: #alien-invoke emit-node

    [ finalize-phantoms ##epilogue ] 2dip ##dispatch
    dispatch-branches init-phantoms ;

M: #dispatch emit-node
    tail-call? [
        emit-dispatch stop-iterating
    ] [
        current-word get gensym [
            [
                begin-word
                emit-dispatch

    [ ##alien-indirect ] emit-alien-node ;

M: #alien-callback emit-node
    dup params>> xt>> dup
    [
        init-phantoms
        [ ##alien-callback ] emit-alien-node drop
