diff options
Diffstat (limited to 'src/lux/compiler')
-rw-r--r-- | src/lux/compiler/host.clj | 12 |
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] |