     BLRL ;
 
 [
-    0 3 LOAD32
-    6 ds-reg 0 LWZ
-    0 6 \ f tag-number CMPI
+    3 ds-reg 0 LWZ
+    ds-reg dup 4 SUBI
+    0 3 \ f tag-number CMPI
     2 BNE
-    3 3 4 ADDI
-    3 3 0 LWZ
-    ds-reg dup 4 SUBI
-    jit-jump-quot
-] rc-absolute-ppc-2/2 rt-literal 1 jit-if-jump jit-define
+    0 B
+] rc-relative-ppc-3 rt-xt 3 jit-if-1 jit-define
+
+[
+    0 B
+] rc-relative-ppc-3 rt-xt 0 jit-if-2 jit-define
 
 [
     0 3 LOAD32

    ds-reg dup 4 SUBI
    jit-jump-quot
] rc-absolute-ppc-2/2 rt-literal 1 jit-dispatch jit-define

! These should not clobber r3 since we store a quotation in there
! in jit-dip

: jit->r ( -- )
    4 ds-reg 0 LWZ

    5 ds-reg -4 STW
    6 ds-reg -8 STW ;

[
    jit->r
    0 BL
    jit-r>
] rc-relative-ppc-3 rt-xt 3 jit-dip jit-define

[
    jit-2>r
    0 BL
    jit-2r>
] rc-relative-ppc-3 rt-xt 6 jit-2dip jit-define

[
    jit-3>r
    0 BL
    jit-3r>
] rc-relative-ppc-3 rt-xt 8 jit-3dip jit-define

[
    0 1 lr-save stack-frame + LWZ
