diff options
-rw-r--r-- | src/lux/compiler/host.clj | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/src/lux/compiler/host.clj b/src/lux/compiler/host.clj index 79658e6d5..0715b024f 100644 --- a/src/lux/compiler/host.clj +++ b/src/lux/compiler/host.clj @@ -1209,17 +1209,10 @@ $end (new Label) _ (doto main-writer ;; Tail: Begin - (.visitLdcInsn (int 2)) ;; S - (.visitTypeInsn Opcodes/ANEWARRAY "java/lang/Object") ;; V - (.visitInsn Opcodes/DUP) ;; VV - (.visitLdcInsn (int 0)) ;; VVI - (.visitLdcInsn (->> #'&/$Nil meta ::&/idx)) ;; VVIT - (&&/wrap-long) - (.visitInsn Opcodes/AASTORE) ;; V - (.visitInsn Opcodes/DUP) ;; VV - (.visitLdcInsn (int 1)) ;; VVI - (.visitInsn Opcodes/ACONST_NULL) ;; VVIN - (.visitInsn Opcodes/AASTORE) ;; V + (.visitLdcInsn (->> #'&/$Nil meta ::&/idx int)) ;; I + (.visitInsn Opcodes/ACONST_NULL) ;; I? + (.visitLdcInsn &/unit-tag) ;; I?U + (.visitMethodInsn Opcodes/INVOKESTATIC "lux/LuxUtils" "sum_make" "(ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;") ;; V ;; Tail: End ;; Size: Begin (.visitVarInsn Opcodes/ALOAD 0) ;; VA @@ -1255,18 +1248,11 @@ (.visitInsn Opcodes/AASTORE) ;; I2 ;; Tuple: End ;; Cons: Begin - (.visitLdcInsn (int 2)) ;; I2I - (.visitTypeInsn Opcodes/ANEWARRAY "java/lang/Object") ;; I2V - (.visitInsn Opcodes/DUP) ;; I2VV - (.visitLdcInsn (int 0)) ;; I2VVI - (.visitLdcInsn (->> #'&/$Cons meta ::&/idx)) ;; I2VVIT - (&&/wrap-long) - (.visitInsn Opcodes/AASTORE) ;; I2V - (.visitInsn Opcodes/DUP_X1) ;; IV2V - (.visitInsn Opcodes/SWAP) ;; IVV2 - (.visitLdcInsn (int 1)) ;; IVV2I - (.visitInsn Opcodes/SWAP) ;; IVVI2 - (.visitInsn Opcodes/AASTORE) ;; IV + (.visitLdcInsn (->> #'&/$Cons meta ::&/idx int)) ;; I2I + (.visitLdcInsn "") ;; I2I? + (.visitInsn Opcodes/DUP2_X1) ;; II?2I? + (.visitInsn Opcodes/POP2) ;; II?2 + (.visitMethodInsn Opcodes/INVOKESTATIC "lux/LuxUtils" "sum_make" "(ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;") ;; IV ;; Cons: End (.visitInsn Opcodes/SWAP) ;; VI (.visitJumpInsn Opcodes/GOTO $loop) |