diff options
Diffstat (limited to '')
-rw-r--r-- | src/lux/analyser.clj | 16 | ||||
-rw-r--r-- | src/lux/analyser/base.clj | 3 | ||||
-rw-r--r-- | src/lux/analyser/host.clj | 205 | ||||
-rw-r--r-- | src/lux/compiler.clj | 9 | ||||
-rw-r--r-- | src/lux/compiler/host.clj | 203 | ||||
-rw-r--r-- | src/lux/optimizer.clj | 12 |
6 files changed, 210 insertions, 238 deletions
diff --git a/src/lux/analyser.clj b/src/lux/analyser.clj index 55f05ce84..9c6158325 100644 --- a/src/lux/analyser.clj +++ b/src/lux/analyser.clj @@ -199,22 +199,6 @@ (|do [catches+finally (&/fold% &&a-parser/parse-handler (&/T [&/$Nil &/$None]) ?handlers)] (&&host/analyse-jvm-try analyse exo-type ?body catches+finally)) - (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_throw")] - (&/$Cons ?ex - (&/$Nil)))) - (&&host/analyse-jvm-throw analyse exo-type ?ex) - - ;; Syncronization/monitos - (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_monitorenter")] - (&/$Cons ?monitor - (&/$Nil)))) - (&&host/analyse-jvm-monitorenter analyse exo-type ?monitor) - - (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_monitorexit")] - (&/$Cons ?monitor - (&/$Nil)))) - (&&host/analyse-jvm-monitorexit analyse exo-type ?monitor) - _ (aba4 analyse eval! compile-module compile-statement exo-type token))) diff --git a/src/lux/analyser/base.clj b/src/lux/analyser/base.clj index 7d20b808d..86838d354 100644 --- a/src/lux/analyser/base.clj +++ b/src/lux/analyser/base.clj @@ -40,9 +40,6 @@ ("jvm-class" 1) ("jvm-interface" 1) ("jvm-try" 1) - ("jvm-throw" 1) - ("jvm-monitorenter" 1) - ("jvm-monitorexit" 1) ("jvm-program" 1) ) diff --git a/src/lux/analyser/host.clj b/src/lux/analyser/host.clj index 2b3dedd4c..4d422d4d1 100644 --- a/src/lux/analyser/host.clj +++ b/src/lux/analyser/host.clj @@ -878,25 +878,6 @@ (&&/$host (&/T ["jvm" "arraylength"]) (&/|list =array)) ))))) -(defn analyse-jvm-throw [analyse exo-type ?ex] - (|do [=ex (&&/analyse-1 analyse (&/$DataT "java.lang.Throwable" &/$Nil) ?ex) - _cursor &/cursor - _ (&type/check exo-type &/$VoidT)] - (return (&/|list (&&/|meta exo-type _cursor (&&/$jvm-throw =ex)))))) - -(do-template [<name> <tag>] - (defn <name> [analyse exo-type ?monitor] - (|do [=monitor (&&/analyse-1+ analyse ?monitor) - _ (ensure-object (&&/expr-type* =monitor)) - :let [output-type &/$UnitT] - _ (&type/check exo-type output-type) - _cursor &/cursor] - (return (&/|list (&&/|meta output-type _cursor (<tag> =monitor)))))) - - analyse-jvm-monitorenter &&/$jvm-monitorenter - analyse-jvm-monitorexit &&/$jvm-monitorexit - ) - (defn ^:private analyse-jvm-null? [analyse exo-type ?values] (|do [:let [(&/$Cons object (&/$Nil)) ?values] =object (&&/analyse-1+ analyse object) @@ -915,90 +896,116 @@ (return (&/|list (&&/|meta exo-type _cursor (&&/$host (&/T ["jvm" "null"]) (&/|list))))))) +(do-template [<name> <tag>] + (defn <name> [analyse exo-type ?values] + (|do [:let [(&/$Cons ?monitor (&/$Nil)) ?values] + =monitor (&&/analyse-1+ analyse ?monitor) + _ (ensure-object (&&/expr-type* =monitor)) + :let [output-type &/$UnitT] + _ (&type/check exo-type output-type) + _cursor &/cursor] + (return (&/|list (&&/|meta exo-type _cursor + (&&/$host (&/T ["jvm" <tag>]) (&/|list =monitor))))))) + + ^:private analyse-jvm-monitorenter "monitorenter" + ^:private analyse-jvm-monitorexit "monitorexit" + ) + +(defn ^:private analyse-jvm-throw [analyse exo-type ?values] + (|do [:let [(&/$Cons ?ex (&/$Nil)) ?values] + =ex (&&/analyse-1 analyse (&/$DataT "java.lang.Throwable" &/$Nil) ?ex) + _cursor &/cursor + _ (&type/check exo-type &/$VoidT)] + (return (&/|list (&&/|meta exo-type _cursor + (&&/$host (&/T ["jvm" "throw"]) (&/|list =ex))))))) + (defn analyse-host [analyse exo-type category proc ?values] (case category "jvm" (case proc - "null?" (analyse-jvm-null? analyse exo-type ?values) - "null" (analyse-jvm-null analyse exo-type ?values) - "anewarray" (analyse-jvm-anewarray analyse exo-type ?values) - "aaload" (analyse-jvm-aaload analyse exo-type ?values) - "aastore" (analyse-jvm-aastore analyse exo-type ?values) - "arraylength" (analyse-jvm-arraylength analyse exo-type ?values) - "znewarray" (analyse-jvm-znewarray analyse exo-type ?values) - "bnewarray" (analyse-jvm-bnewarray analyse exo-type ?values) - "snewarray" (analyse-jvm-snewarray analyse exo-type ?values) - "inewarray" (analyse-jvm-inewarray analyse exo-type ?values) - "lnewarray" (analyse-jvm-lnewarray analyse exo-type ?values) - "fnewarray" (analyse-jvm-fnewarray analyse exo-type ?values) - "dnewarray" (analyse-jvm-dnewarray analyse exo-type ?values) - "cnewarray" (analyse-jvm-cnewarray analyse exo-type ?values) - "iadd" (analyse-jvm-iadd analyse exo-type ?values) - "isub" (analyse-jvm-isub analyse exo-type ?values) - "imul" (analyse-jvm-imul analyse exo-type ?values) - "idiv" (analyse-jvm-idiv analyse exo-type ?values) - "irem" (analyse-jvm-irem analyse exo-type ?values) - "ieq" (analyse-jvm-ieq analyse exo-type ?values) - "ilt" (analyse-jvm-ilt analyse exo-type ?values) - "igt" (analyse-jvm-igt analyse exo-type ?values) - "ceq" (analyse-jvm-ceq analyse exo-type ?values) - "clt" (analyse-jvm-clt analyse exo-type ?values) - "cgt" (analyse-jvm-cgt analyse exo-type ?values) - "ladd" (analyse-jvm-ladd analyse exo-type ?values) - "lsub" (analyse-jvm-lsub analyse exo-type ?values) - "lmul" (analyse-jvm-lmul analyse exo-type ?values) - "ldiv" (analyse-jvm-ldiv analyse exo-type ?values) - "lrem" (analyse-jvm-lrem analyse exo-type ?values) - "leq" (analyse-jvm-leq analyse exo-type ?values) - "llt" (analyse-jvm-llt analyse exo-type ?values) - "lgt" (analyse-jvm-lgt analyse exo-type ?values) - "fadd" (analyse-jvm-fadd analyse exo-type ?values) - "fsub" (analyse-jvm-fsub analyse exo-type ?values) - "fmul" (analyse-jvm-fmul analyse exo-type ?values) - "fdiv" (analyse-jvm-fdiv analyse exo-type ?values) - "frem" (analyse-jvm-frem analyse exo-type ?values) - "feq" (analyse-jvm-feq analyse exo-type ?values) - "flt" (analyse-jvm-flt analyse exo-type ?values) - "fgt" (analyse-jvm-fgt analyse exo-type ?values) - "dadd" (analyse-jvm-dadd analyse exo-type ?values) - "dsub" (analyse-jvm-dsub analyse exo-type ?values) - "dmul" (analyse-jvm-dmul analyse exo-type ?values) - "ddiv" (analyse-jvm-ddiv analyse exo-type ?values) - "drem" (analyse-jvm-drem analyse exo-type ?values) - "deq" (analyse-jvm-deq analyse exo-type ?values) - "dlt" (analyse-jvm-dlt analyse exo-type ?values) - "dgt" (analyse-jvm-dgt analyse exo-type ?values) - "iand" (analyse-jvm-iand analyse exo-type ?values) - "ior" (analyse-jvm-ior analyse exo-type ?values) - "ixor" (analyse-jvm-ixor analyse exo-type ?values) - "ishl" (analyse-jvm-ishl analyse exo-type ?values) - "ishr" (analyse-jvm-ishr analyse exo-type ?values) - "iushr" (analyse-jvm-iushr analyse exo-type ?values) - "land" (analyse-jvm-land analyse exo-type ?values) - "lor" (analyse-jvm-lor analyse exo-type ?values) - "lxor" (analyse-jvm-lxor analyse exo-type ?values) - "lshl" (analyse-jvm-lshl analyse exo-type ?values) - "lshr" (analyse-jvm-lshr analyse exo-type ?values) - "lushr" (analyse-jvm-lushr analyse exo-type ?values) - "d2f" (analyse-jvm-d2f analyse exo-type ?values) - "d2i" (analyse-jvm-d2i analyse exo-type ?values) - "d2l" (analyse-jvm-d2l analyse exo-type ?values) - "f2d" (analyse-jvm-f2d analyse exo-type ?values) - "f2i" (analyse-jvm-f2i analyse exo-type ?values) - "f2l" (analyse-jvm-f2l analyse exo-type ?values) - "i2b" (analyse-jvm-i2b analyse exo-type ?values) - "i2c" (analyse-jvm-i2c analyse exo-type ?values) - "i2d" (analyse-jvm-i2d analyse exo-type ?values) - "i2f" (analyse-jvm-i2f analyse exo-type ?values) - "i2l" (analyse-jvm-i2l analyse exo-type ?values) - "i2s" (analyse-jvm-i2s analyse exo-type ?values) - "l2d" (analyse-jvm-l2d analyse exo-type ?values) - "l2f" (analyse-jvm-l2f analyse exo-type ?values) - "l2i" (analyse-jvm-l2i analyse exo-type ?values) - "c2b" (analyse-jvm-c2b analyse exo-type ?values) - "c2s" (analyse-jvm-c2s analyse exo-type ?values) - "c2i" (analyse-jvm-c2i analyse exo-type ?values) - "c2l" (analyse-jvm-c2l analyse exo-type ?values) + "throw" (analyse-jvm-throw analyse exo-type ?values) + "monitorenter" (analyse-jvm-monitorenter analyse exo-type ?values) + "monitorexit" (analyse-jvm-monitorexit analyse exo-type ?values) + "null?" (analyse-jvm-null? analyse exo-type ?values) + "null" (analyse-jvm-null analyse exo-type ?values) + "anewarray" (analyse-jvm-anewarray analyse exo-type ?values) + "aaload" (analyse-jvm-aaload analyse exo-type ?values) + "aastore" (analyse-jvm-aastore analyse exo-type ?values) + "arraylength" (analyse-jvm-arraylength analyse exo-type ?values) + "znewarray" (analyse-jvm-znewarray analyse exo-type ?values) + "bnewarray" (analyse-jvm-bnewarray analyse exo-type ?values) + "snewarray" (analyse-jvm-snewarray analyse exo-type ?values) + "inewarray" (analyse-jvm-inewarray analyse exo-type ?values) + "lnewarray" (analyse-jvm-lnewarray analyse exo-type ?values) + "fnewarray" (analyse-jvm-fnewarray analyse exo-type ?values) + "dnewarray" (analyse-jvm-dnewarray analyse exo-type ?values) + "cnewarray" (analyse-jvm-cnewarray analyse exo-type ?values) + "iadd" (analyse-jvm-iadd analyse exo-type ?values) + "isub" (analyse-jvm-isub analyse exo-type ?values) + "imul" (analyse-jvm-imul analyse exo-type ?values) + "idiv" (analyse-jvm-idiv analyse exo-type ?values) + "irem" (analyse-jvm-irem analyse exo-type ?values) + "ieq" (analyse-jvm-ieq analyse exo-type ?values) + "ilt" (analyse-jvm-ilt analyse exo-type ?values) + "igt" (analyse-jvm-igt analyse exo-type ?values) + "ceq" (analyse-jvm-ceq analyse exo-type ?values) + "clt" (analyse-jvm-clt analyse exo-type ?values) + "cgt" (analyse-jvm-cgt analyse exo-type ?values) + "ladd" (analyse-jvm-ladd analyse exo-type ?values) + "lsub" (analyse-jvm-lsub analyse exo-type ?values) + "lmul" (analyse-jvm-lmul analyse exo-type ?values) + "ldiv" (analyse-jvm-ldiv analyse exo-type ?values) + "lrem" (analyse-jvm-lrem analyse exo-type ?values) + "leq" (analyse-jvm-leq analyse exo-type ?values) + "llt" (analyse-jvm-llt analyse exo-type ?values) + "lgt" (analyse-jvm-lgt analyse exo-type ?values) + "fadd" (analyse-jvm-fadd analyse exo-type ?values) + "fsub" (analyse-jvm-fsub analyse exo-type ?values) + "fmul" (analyse-jvm-fmul analyse exo-type ?values) + "fdiv" (analyse-jvm-fdiv analyse exo-type ?values) + "frem" (analyse-jvm-frem analyse exo-type ?values) + "feq" (analyse-jvm-feq analyse exo-type ?values) + "flt" (analyse-jvm-flt analyse exo-type ?values) + "fgt" (analyse-jvm-fgt analyse exo-type ?values) + "dadd" (analyse-jvm-dadd analyse exo-type ?values) + "dsub" (analyse-jvm-dsub analyse exo-type ?values) + "dmul" (analyse-jvm-dmul analyse exo-type ?values) + "ddiv" (analyse-jvm-ddiv analyse exo-type ?values) + "drem" (analyse-jvm-drem analyse exo-type ?values) + "deq" (analyse-jvm-deq analyse exo-type ?values) + "dlt" (analyse-jvm-dlt analyse exo-type ?values) + "dgt" (analyse-jvm-dgt analyse exo-type ?values) + "iand" (analyse-jvm-iand analyse exo-type ?values) + "ior" (analyse-jvm-ior analyse exo-type ?values) + "ixor" (analyse-jvm-ixor analyse exo-type ?values) + "ishl" (analyse-jvm-ishl analyse exo-type ?values) + "ishr" (analyse-jvm-ishr analyse exo-type ?values) + "iushr" (analyse-jvm-iushr analyse exo-type ?values) + "land" (analyse-jvm-land analyse exo-type ?values) + "lor" (analyse-jvm-lor analyse exo-type ?values) + "lxor" (analyse-jvm-lxor analyse exo-type ?values) + "lshl" (analyse-jvm-lshl analyse exo-type ?values) + "lshr" (analyse-jvm-lshr analyse exo-type ?values) + "lushr" (analyse-jvm-lushr analyse exo-type ?values) + "d2f" (analyse-jvm-d2f analyse exo-type ?values) + "d2i" (analyse-jvm-d2i analyse exo-type ?values) + "d2l" (analyse-jvm-d2l analyse exo-type ?values) + "f2d" (analyse-jvm-f2d analyse exo-type ?values) + "f2i" (analyse-jvm-f2i analyse exo-type ?values) + "f2l" (analyse-jvm-f2l analyse exo-type ?values) + "i2b" (analyse-jvm-i2b analyse exo-type ?values) + "i2c" (analyse-jvm-i2c analyse exo-type ?values) + "i2d" (analyse-jvm-i2d analyse exo-type ?values) + "i2f" (analyse-jvm-i2f analyse exo-type ?values) + "i2l" (analyse-jvm-i2l analyse exo-type ?values) + "i2s" (analyse-jvm-i2s analyse exo-type ?values) + "l2d" (analyse-jvm-l2d analyse exo-type ?values) + "l2f" (analyse-jvm-l2f analyse exo-type ?values) + "l2i" (analyse-jvm-l2i analyse exo-type ?values) + "c2b" (analyse-jvm-c2b analyse exo-type ?values) + "c2s" (analyse-jvm-c2s analyse exo-type ?values) + "c2i" (analyse-jvm-c2i analyse exo-type ?values) + "c2l" (analyse-jvm-c2l analyse exo-type ?values) ;; else (fail (str "[Analyser Error] Unknown host procedure: " [category proc]))) diff --git a/src/lux/compiler.clj b/src/lux/compiler.clj index 6ea22dc66..f3af23768 100644 --- a/src/lux/compiler.clj +++ b/src/lux/compiler.clj @@ -125,15 +125,6 @@ (&o/$jvm-try ?body ?catches ?finally) (&&host/compile-jvm-try compile-expression ?body ?catches ?finally) - (&o/$jvm-throw ?ex) - (&&host/compile-jvm-throw compile-expression ?ex) - - (&o/$jvm-monitorenter ?monitor) - (&&host/compile-jvm-monitorenter compile-expression ?monitor) - - (&o/$jvm-monitorexit ?monitor) - (&&host/compile-jvm-monitorexit compile-expression ?monitor) - (&o/$jvm-instanceof ?class ?object) (&&host/compile-jvm-instanceof compile-expression ?class ?object) diff --git a/src/lux/compiler/host.clj b/src/lux/compiler/host.clj index 4caea6112..ba73cb283 100644 --- a/src/lux/compiler/host.clj +++ b/src/lux/compiler/host.clj @@ -881,25 +881,6 @@ :let [_ (.visitLabel *writer* $end)]] (return nil))) -(defn compile-jvm-throw [compile ?ex] - (|do [^MethodVisitor *writer* &/get-writer - _ (compile ?ex) - :let [_ (.visitInsn *writer* Opcodes/ATHROW)]] - (return nil))) - -(do-template [<name> <op>] - (defn <name> [compile ?monitor] - (|do [^MethodVisitor *writer* &/get-writer - _ (compile ?monitor) - :let [_ (doto *writer* - (.visitInsn <op>) - (.visitInsn Opcodes/ACONST_NULL))]] - (return nil))) - - compile-jvm-monitorenter Opcodes/MONITORENTER - compile-jvm-monitorexit Opcodes/MONITOREXIT - ) - (do-template [<name> <op> <from-class> <from-method> <from-sig> <to-class> <to-sig>] (defn <name> [compile _?value] (|do [:let [(&/$Cons ?value (&/$Nil)) _?value] @@ -1213,90 +1194,114 @@ (.visitLabel $end))]] (return nil))) +(do-template [<name> <op>] + (defn <name> [compile ?values] + (|do [:let [(&/$Cons ?monitor (&/$Nil)) ?values] + ^MethodVisitor *writer* &/get-writer + _ (compile ?monitor) + :let [_ (doto *writer* + (.visitInsn <op>) + (.visitInsn Opcodes/ACONST_NULL))]] + (return nil))) + + ^:private compile-jvm-monitorenter Opcodes/MONITORENTER + ^:private compile-jvm-monitorexit Opcodes/MONITOREXIT + ) + +(defn ^:private compile-jvm-throw [compile ?values] + (|do [:let [(&/$Cons ?ex (&/$Nil)) ?values] + ^MethodVisitor *writer* &/get-writer + _ (compile ?ex) + :let [_ (.visitInsn *writer* Opcodes/ATHROW)]] + (return nil))) + (defn compile-host [compile proc-category proc-name ?values] (case proc-category "jvm" (case proc-name - "null?" (compile-jvm-null? compile ?values) - "null" (compile-jvm-null compile ?values) - "anewarray" (compile-jvm-anewarray compile ?values) - "aaload" (compile-jvm-aaload compile ?values) - "aastore" (compile-jvm-aastore compile ?values) - "arraylength" (compile-jvm-arraylength compile ?values) - "znewarray" (compile-jvm-znewarray compile ?values) - "bnewarray" (compile-jvm-bnewarray compile ?values) - "snewarray" (compile-jvm-snewarray compile ?values) - "inewarray" (compile-jvm-inewarray compile ?values) - "lnewarray" (compile-jvm-lnewarray compile ?values) - "fnewarray" (compile-jvm-fnewarray compile ?values) - "dnewarray" (compile-jvm-dnewarray compile ?values) - "cnewarray" (compile-jvm-cnewarray compile ?values) - "iadd" (compile-jvm-iadd compile ?values) - "isub" (compile-jvm-isub compile ?values) - "imul" (compile-jvm-imul compile ?values) - "idiv" (compile-jvm-idiv compile ?values) - "irem" (compile-jvm-irem compile ?values) - "ieq" (compile-jvm-ieq compile ?values) - "ilt" (compile-jvm-ilt compile ?values) - "igt" (compile-jvm-igt compile ?values) - "ceq" (compile-jvm-ceq compile ?values) - "clt" (compile-jvm-clt compile ?values) - "cgt" (compile-jvm-cgt compile ?values) - "ladd" (compile-jvm-ladd compile ?values) - "lsub" (compile-jvm-lsub compile ?values) - "lmul" (compile-jvm-lmul compile ?values) - "ldiv" (compile-jvm-ldiv compile ?values) - "lrem" (compile-jvm-lrem compile ?values) - "leq" (compile-jvm-leq compile ?values) - "llt" (compile-jvm-llt compile ?values) - "lgt" (compile-jvm-lgt compile ?values) - "fadd" (compile-jvm-fadd compile ?values) - "fsub" (compile-jvm-fsub compile ?values) - "fmul" (compile-jvm-fmul compile ?values) - "fdiv" (compile-jvm-fdiv compile ?values) - "frem" (compile-jvm-frem compile ?values) - "feq" (compile-jvm-feq compile ?values) - "flt" (compile-jvm-flt compile ?values) - "fgt" (compile-jvm-fgt compile ?values) - "dadd" (compile-jvm-dadd compile ?values) - "dsub" (compile-jvm-dsub compile ?values) - "dmul" (compile-jvm-dmul compile ?values) - "ddiv" (compile-jvm-ddiv compile ?values) - "drem" (compile-jvm-drem compile ?values) - "deq" (compile-jvm-deq compile ?values) - "dlt" (compile-jvm-dlt compile ?values) - "dgt" (compile-jvm-dgt compile ?values) - "iand" (compile-jvm-iand compile ?values) - "ior" (compile-jvm-ior compile ?values) - "ixor" (compile-jvm-ixor compile ?values) - "ishl" (compile-jvm-ishl compile ?values) - "ishr" (compile-jvm-ishr compile ?values) - "iushr" (compile-jvm-iushr compile ?values) - "land" (compile-jvm-land compile ?values) - "lor" (compile-jvm-lor compile ?values) - "lxor" (compile-jvm-lxor compile ?values) - "lshl" (compile-jvm-lshl compile ?values) - "lshr" (compile-jvm-lshr compile ?values) - "lushr" (compile-jvm-lushr compile ?values) - "d2f" (compile-jvm-d2f compile ?values) - "d2i" (compile-jvm-d2i compile ?values) - "d2l" (compile-jvm-d2l compile ?values) - "f2d" (compile-jvm-f2d compile ?values) - "f2i" (compile-jvm-f2i compile ?values) - "f2l" (compile-jvm-f2l compile ?values) - "i2b" (compile-jvm-i2b compile ?values) - "i2c" (compile-jvm-i2c compile ?values) - "i2d" (compile-jvm-i2d compile ?values) - "i2f" (compile-jvm-i2f compile ?values) - "i2l" (compile-jvm-i2l compile ?values) - "i2s" (compile-jvm-i2s compile ?values) - "l2d" (compile-jvm-l2d compile ?values) - "l2f" (compile-jvm-l2f compile ?values) - "l2i" (compile-jvm-l2i compile ?values) - "c2b" (compile-jvm-c2b compile ?values) - "c2s" (compile-jvm-c2s compile ?values) - "c2i" (compile-jvm-c2i compile ?values) - "c2l" (compile-jvm-c2l compile ?values) + "throw" (compile-jvm-throw compile ?values) + "monitorenter" (compile-jvm-monitorenter compile ?values) + "monitorexit" (compile-jvm-monitorexit compile ?values) + "null?" (compile-jvm-null? compile ?values) + "null" (compile-jvm-null compile ?values) + "anewarray" (compile-jvm-anewarray compile ?values) + "aaload" (compile-jvm-aaload compile ?values) + "aastore" (compile-jvm-aastore compile ?values) + "arraylength" (compile-jvm-arraylength compile ?values) + "znewarray" (compile-jvm-znewarray compile ?values) + "bnewarray" (compile-jvm-bnewarray compile ?values) + "snewarray" (compile-jvm-snewarray compile ?values) + "inewarray" (compile-jvm-inewarray compile ?values) + "lnewarray" (compile-jvm-lnewarray compile ?values) + "fnewarray" (compile-jvm-fnewarray compile ?values) + "dnewarray" (compile-jvm-dnewarray compile ?values) + "cnewarray" (compile-jvm-cnewarray compile ?values) + "iadd" (compile-jvm-iadd compile ?values) + "isub" (compile-jvm-isub compile ?values) + "imul" (compile-jvm-imul compile ?values) + "idiv" (compile-jvm-idiv compile ?values) + "irem" (compile-jvm-irem compile ?values) + "ieq" (compile-jvm-ieq compile ?values) + "ilt" (compile-jvm-ilt compile ?values) + "igt" (compile-jvm-igt compile ?values) + "ceq" (compile-jvm-ceq compile ?values) + "clt" (compile-jvm-clt compile ?values) + "cgt" (compile-jvm-cgt compile ?values) + "ladd" (compile-jvm-ladd compile ?values) + "lsub" (compile-jvm-lsub compile ?values) + "lmul" (compile-jvm-lmul compile ?values) + "ldiv" (compile-jvm-ldiv compile ?values) + "lrem" (compile-jvm-lrem compile ?values) + "leq" (compile-jvm-leq compile ?values) + "llt" (compile-jvm-llt compile ?values) + "lgt" (compile-jvm-lgt compile ?values) + "fadd" (compile-jvm-fadd compile ?values) + "fsub" (compile-jvm-fsub compile ?values) + "fmul" (compile-jvm-fmul compile ?values) + "fdiv" (compile-jvm-fdiv compile ?values) + "frem" (compile-jvm-frem compile ?values) + "feq" (compile-jvm-feq compile ?values) + "flt" (compile-jvm-flt compile ?values) + "fgt" (compile-jvm-fgt compile ?values) + "dadd" (compile-jvm-dadd compile ?values) + "dsub" (compile-jvm-dsub compile ?values) + "dmul" (compile-jvm-dmul compile ?values) + "ddiv" (compile-jvm-ddiv compile ?values) + "drem" (compile-jvm-drem compile ?values) + "deq" (compile-jvm-deq compile ?values) + "dlt" (compile-jvm-dlt compile ?values) + "dgt" (compile-jvm-dgt compile ?values) + "iand" (compile-jvm-iand compile ?values) + "ior" (compile-jvm-ior compile ?values) + "ixor" (compile-jvm-ixor compile ?values) + "ishl" (compile-jvm-ishl compile ?values) + "ishr" (compile-jvm-ishr compile ?values) + "iushr" (compile-jvm-iushr compile ?values) + "land" (compile-jvm-land compile ?values) + "lor" (compile-jvm-lor compile ?values) + "lxor" (compile-jvm-lxor compile ?values) + "lshl" (compile-jvm-lshl compile ?values) + "lshr" (compile-jvm-lshr compile ?values) + "lushr" (compile-jvm-lushr compile ?values) + "d2f" (compile-jvm-d2f compile ?values) + "d2i" (compile-jvm-d2i compile ?values) + "d2l" (compile-jvm-d2l compile ?values) + "f2d" (compile-jvm-f2d compile ?values) + "f2i" (compile-jvm-f2i compile ?values) + "f2l" (compile-jvm-f2l compile ?values) + "i2b" (compile-jvm-i2b compile ?values) + "i2c" (compile-jvm-i2c compile ?values) + "i2d" (compile-jvm-i2d compile ?values) + "i2f" (compile-jvm-i2f compile ?values) + "i2l" (compile-jvm-i2l compile ?values) + "i2s" (compile-jvm-i2s compile ?values) + "l2d" (compile-jvm-l2d compile ?values) + "l2f" (compile-jvm-l2f compile ?values) + "l2i" (compile-jvm-l2i compile ?values) + "c2b" (compile-jvm-c2b compile ?values) + "c2s" (compile-jvm-c2s compile ?values) + "c2i" (compile-jvm-c2i compile ?values) + "c2l" (compile-jvm-c2l compile ?values) ;; else (fail (str "[Compiler Error] Unknown host procedure: " [proc-category proc-name]))) diff --git a/src/lux/optimizer.clj b/src/lux/optimizer.clj index 69ffd25ba..14cd42fdb 100644 --- a/src/lux/optimizer.clj +++ b/src/lux/optimizer.clj @@ -39,9 +39,6 @@ ("jvm-class" 1) ("jvm-interface" 1) ("jvm-try" 1) - ("jvm-throw" 1) - ("jvm-monitorenter" 1) - ("jvm-monitorexit" 1) ("jvm-program" 1) ) @@ -133,15 +130,6 @@ (&-base/$jvm-try value) (return ($jvm-try value)) - (&-base/$jvm-throw value) - (return ($jvm-throw value)) - - (&-base/$jvm-monitorenter value) - (return ($jvm-monitorenter value)) - - (&-base/$jvm-monitorexit value) - (return ($jvm-monitorexit value)) - (&-base/$jvm-program value) (return ($jvm-program value)) |