     temp MTCTR
     BCTR ;
 
-: (%slot-imm) ( obj slot tag -- reg offset )
-    [ cells ] dip - ; inline
-
 M: ppc %slot ( dst obj slot -- ) swapd LWZX ;
-M: ppc %slot-imm ( dst obj slot tag -- ) (%slot-imm) LWZ ;
+M: ppc %slot-imm ( dst obj slot tag -- ) slot-offset LWZ ;
 M: ppc %set-slot ( src obj slot -- ) swapd STWX ;
-M: ppc %set-slot-imm ( src obj slot tag -- ) (%slot-imm) STW ;
+M: ppc %set-slot-imm ( src obj slot tag -- ) slot-offset STW ;
 
 M:: ppc %string-nth ( dst src index temp -- )
     [

    "nursery" %load-vm-field-addr ;

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

:: inc-allot-ptr ( nursery-ptr allot-ptr n -- )
    scratch-reg allot-ptr n 8 align ADDI
    scratch-reg nursery-ptr 4 STW ;

:: store-header ( dst class -- )
    class type-number tag-fixnum scratch-reg LI

>>

: %load-vm-addr ( reg -- )
    0 swap LOAD32 0 rc-absolute-ppc-2/2 rel-vm ;

: %load-vm-field-addr ( reg symbol -- )
    [ 0 swap LOAD32 ] dip
    vm-field-offset rc-absolute-ppc-2/2 rel-vm ;

M: ppc %vm-field-ptr ( dst field -- ) %load-vm-field-addr ;

