aboutsummaryrefslogtreecommitdiff
path: root/src/lux/compiler/host.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/lux/compiler/host.clj')
-rw-r--r--src/lux/compiler/host.clj12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lux/compiler/host.clj b/src/lux/compiler/host.clj
index 009c9a9e4..19af75dce 100644
--- a/src/lux/compiler/host.clj
+++ b/src/lux/compiler/host.clj
@@ -283,7 +283,9 @@
(do (defn <new-name> [compile ?length]
(|do [^MethodVisitor *writer* &/get-writer
_ (compile ?length)
- :let [_ (.visitInsn *writer* Opcodes/L2I)]
+ :let [_ (doto *writer*
+ &&/unwrap-long
+ (.visitInsn Opcodes/L2I))]
:let [_ (.visitIntInsn *writer* Opcodes/NEWARRAY <prim-type>)]]
(return nil)))
@@ -326,11 +328,13 @@
Opcodes/T_CHAR "[C" compile-jvm-cnewarray compile-jvm-caload Opcodes/CALOAD compile-jvm-castore Opcodes/CASTORE &&/wrap-char &&/unwrap-char
)
-(defn compile-jvm-anewarray [compile ?class ?length]
+(defn compile-jvm-anewarray [compile ?gclass ?length type-env]
(|do [^MethodVisitor *writer* &/get-writer
_ (compile ?length)
- :let [_ (.visitInsn *writer* Opcodes/L2I)]
- :let [_ (.visitTypeInsn *writer* Opcodes/ANEWARRAY (&host-generics/->bytecode-class-name ?class))]]
+ :let [_ (doto *writer*
+ &&/unwrap-long
+ (.visitInsn Opcodes/L2I))]
+ :let [_ (.visitTypeInsn *writer* Opcodes/ANEWARRAY (&host-generics/gclass->bytecode-class-name* ?gclass type-env))]]
(return nil)))
(defn compile-jvm-aaload [compile ?array ?idx]