     dst class store-header
     dst class store-tagged ;
 
-: %alien-global ( dst name -- )
-    [ f rot %load-dlsym ] [ drop dup 0 LWZ ] 2bi ;
-
 : load-cards-offset ( dst -- )
-    "cards_offset" %alien-global ;
+    [ "cards_offset" f %alien-global ] [ dup 0 LWZ ] bi ;
 
 : load-decks-offset ( dst -- )
-    "decks_offset" %alien-global ;
+    [ "decks_offset" f %alien-global ] [ dup 0 LWZ ] bi  ;
 
 M:: ppc %write-barrier ( src card# table -- )
     card-mark scratch-reg LI

M: ppc %set-alien-double swap 0 STFD ;

: load-zone-ptr ( reg -- )
    [ "nursery" f ] dip %load-dlsym ;

: load-allot-ptr ( nursery-ptr allot-ptr -- )
    [ drop load-zone-ptr ] [ swap 4 LWZ ] 2bi ;

M: ppc %not     NOT ;

: %alien-invoke-tail ( func dll -- )
    [ scratch-reg ] 2dip %alien-global scratch-reg MTCTR BCTR ;

:: exchange-regs ( r1 r2 -- )
    scratch-reg r1 MR
