aboutsummaryrefslogtreecommitdiff
path: root/src/lux/compiler.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/lux/compiler.clj')
-rw-r--r--src/lux/compiler.clj253
1 files changed, 127 insertions, 126 deletions
diff --git a/src/lux/compiler.clj b/src/lux/compiler.clj
index e095a3547..e951b476d 100644
--- a/src/lux/compiler.clj
+++ b/src/lux/compiler.clj
@@ -18,6 +18,7 @@
[analyser :as &analyser]
[optimizer :as &optimizer]
[host :as &host])
+ [lux.optimizer :as &o]
[lux.analyser.base :as &a]
[lux.analyser.module :as &a-module]
(lux.compiler [base :as &&]
@@ -47,372 +48,372 @@
(.visitLineNumber (int _line) debug-label))
(swap! !source->last-line assoc _file-name _line))]]
(|case ?form
- (&a/$bool ?value)
+ (&o/$bool ?value)
(&&lux/compile-bool compile-expression ?value)
- (&a/$int ?value)
+ (&o/$int ?value)
(&&lux/compile-int compile-expression ?value)
- (&a/$real ?value)
+ (&o/$real ?value)
(&&lux/compile-real compile-expression ?value)
- (&a/$char ?value)
+ (&o/$char ?value)
(&&lux/compile-char compile-expression ?value)
- (&a/$text ?value)
+ (&o/$text ?value)
(&&lux/compile-text compile-expression ?value)
- (&a/$tuple ?elems)
+ (&o/$tuple ?elems)
(&&lux/compile-tuple compile-expression ?elems)
- (&a/$var (&/$Local ?idx))
+ (&o/$var (&/$Local ?idx))
(&&lux/compile-local compile-expression ?idx)
- (&a/$captured ?scope ?captured-id ?source)
+ (&o/$captured ?scope ?captured-id ?source)
(&&lux/compile-captured compile-expression ?scope ?captured-id ?source)
- (&a/$var (&/$Global ?owner-class ?name))
+ (&o/$var (&/$Global ?owner-class ?name))
(&&lux/compile-global compile-expression ?owner-class ?name)
- (&a/$apply ?fn ?args)
+ (&o/$apply ?fn ?args)
(&&lux/compile-apply compile-expression ?fn ?args)
- (&a/$variant ?tag ?members)
+ (&o/$variant ?tag ?members)
(&&lux/compile-variant compile-expression ?tag ?members)
- (&a/$case ?value ?match)
+ (&o/$case ?value ?match)
(&&case/compile-case compile-expression ?value ?match)
- (&a/$lambda ?scope ?env ?body)
+ (&o/$lambda ?scope ?env ?body)
(&&lambda/compile-lambda compile-expression ?scope ?env ?body)
- (&a/$ann ?value-ex ?type-ex ?value-type)
+ (&o/$ann ?value-ex ?type-ex ?value-type)
(&&lux/compile-ann compile-expression ?value-ex ?type-ex ?value-type)
- (&a/$coerce ?value-ex ?type-ex ?value-type)
+ (&o/$coerce ?value-ex ?type-ex ?value-type)
(&&lux/compile-coerce compile-expression ?value-ex ?type-ex ?value-type)
;; Characters
- (&a/$jvm-ceq ?x ?y)
+ (&o/$jvm-ceq ?x ?y)
(&&host/compile-jvm-ceq compile-expression ?x ?y)
- (&a/$jvm-clt ?x ?y)
+ (&o/$jvm-clt ?x ?y)
(&&host/compile-jvm-clt compile-expression ?x ?y)
- (&a/$jvm-cgt ?x ?y)
+ (&o/$jvm-cgt ?x ?y)
(&&host/compile-jvm-cgt compile-expression ?x ?y)
;; Integer arithmetic
- (&a/$jvm-iadd ?x ?y)
+ (&o/$jvm-iadd ?x ?y)
(&&host/compile-jvm-iadd compile-expression ?x ?y)
- (&a/$jvm-isub ?x ?y)
+ (&o/$jvm-isub ?x ?y)
(&&host/compile-jvm-isub compile-expression ?x ?y)
- (&a/$jvm-imul ?x ?y)
+ (&o/$jvm-imul ?x ?y)
(&&host/compile-jvm-imul compile-expression ?x ?y)
- (&a/$jvm-idiv ?x ?y)
+ (&o/$jvm-idiv ?x ?y)
(&&host/compile-jvm-idiv compile-expression ?x ?y)
- (&a/$jvm-irem ?x ?y)
+ (&o/$jvm-irem ?x ?y)
(&&host/compile-jvm-irem compile-expression ?x ?y)
- (&a/$jvm-ieq ?x ?y)
+ (&o/$jvm-ieq ?x ?y)
(&&host/compile-jvm-ieq compile-expression ?x ?y)
- (&a/$jvm-ilt ?x ?y)
+ (&o/$jvm-ilt ?x ?y)
(&&host/compile-jvm-ilt compile-expression ?x ?y)
- (&a/$jvm-igt ?x ?y)
+ (&o/$jvm-igt ?x ?y)
(&&host/compile-jvm-igt compile-expression ?x ?y)
;; Long arithmetic
- (&a/$jvm-ladd ?x ?y)
+ (&o/$jvm-ladd ?x ?y)
(&&host/compile-jvm-ladd compile-expression ?x ?y)
- (&a/$jvm-lsub ?x ?y)
+ (&o/$jvm-lsub ?x ?y)
(&&host/compile-jvm-lsub compile-expression ?x ?y)
- (&a/$jvm-lmul ?x ?y)
+ (&o/$jvm-lmul ?x ?y)
(&&host/compile-jvm-lmul compile-expression ?x ?y)
- (&a/$jvm-ldiv ?x ?y)
+ (&o/$jvm-ldiv ?x ?y)
(&&host/compile-jvm-ldiv compile-expression ?x ?y)
- (&a/$jvm-lrem ?x ?y)
+ (&o/$jvm-lrem ?x ?y)
(&&host/compile-jvm-lrem compile-expression ?x ?y)
- (&a/$jvm-leq ?x ?y)
+ (&o/$jvm-leq ?x ?y)
(&&host/compile-jvm-leq compile-expression ?x ?y)
- (&a/$jvm-llt ?x ?y)
+ (&o/$jvm-llt ?x ?y)
(&&host/compile-jvm-llt compile-expression ?x ?y)
- (&a/$jvm-lgt ?x ?y)
+ (&o/$jvm-lgt ?x ?y)
(&&host/compile-jvm-lgt compile-expression ?x ?y)
;; Float arithmetic
- (&a/$jvm-fadd ?x ?y)
+ (&o/$jvm-fadd ?x ?y)
(&&host/compile-jvm-fadd compile-expression ?x ?y)
- (&a/$jvm-fsub ?x ?y)
+ (&o/$jvm-fsub ?x ?y)
(&&host/compile-jvm-fsub compile-expression ?x ?y)
- (&a/$jvm-fmul ?x ?y)
+ (&o/$jvm-fmul ?x ?y)
(&&host/compile-jvm-fmul compile-expression ?x ?y)
- (&a/$jvm-fdiv ?x ?y)
+ (&o/$jvm-fdiv ?x ?y)
(&&host/compile-jvm-fdiv compile-expression ?x ?y)
- (&a/$jvm-frem ?x ?y)
+ (&o/$jvm-frem ?x ?y)
(&&host/compile-jvm-frem compile-expression ?x ?y)
- (&a/$jvm-feq ?x ?y)
+ (&o/$jvm-feq ?x ?y)
(&&host/compile-jvm-feq compile-expression ?x ?y)
- (&a/$jvm-flt ?x ?y)
+ (&o/$jvm-flt ?x ?y)
(&&host/compile-jvm-flt compile-expression ?x ?y)
- (&a/$jvm-fgt ?x ?y)
+ (&o/$jvm-fgt ?x ?y)
(&&host/compile-jvm-fgt compile-expression ?x ?y)
;; Double arithmetic
- (&a/$jvm-dadd ?x ?y)
+ (&o/$jvm-dadd ?x ?y)
(&&host/compile-jvm-dadd compile-expression ?x ?y)
- (&a/$jvm-dsub ?x ?y)
+ (&o/$jvm-dsub ?x ?y)
(&&host/compile-jvm-dsub compile-expression ?x ?y)
- (&a/$jvm-dmul ?x ?y)
+ (&o/$jvm-dmul ?x ?y)
(&&host/compile-jvm-dmul compile-expression ?x ?y)
- (&a/$jvm-ddiv ?x ?y)
+ (&o/$jvm-ddiv ?x ?y)
(&&host/compile-jvm-ddiv compile-expression ?x ?y)
- (&a/$jvm-drem ?x ?y)
+ (&o/$jvm-drem ?x ?y)
(&&host/compile-jvm-drem compile-expression ?x ?y)
- (&a/$jvm-deq ?x ?y)
+ (&o/$jvm-deq ?x ?y)
(&&host/compile-jvm-deq compile-expression ?x ?y)
- (&a/$jvm-dlt ?x ?y)
+ (&o/$jvm-dlt ?x ?y)
(&&host/compile-jvm-dlt compile-expression ?x ?y)
- (&a/$jvm-dgt ?x ?y)
+ (&o/$jvm-dgt ?x ?y)
(&&host/compile-jvm-dgt compile-expression ?x ?y)
- (&a/$jvm-null _)
+ (&o/$jvm-null _)
(&&host/compile-jvm-null compile-expression)
- (&a/$jvm-null? ?object)
+ (&o/$jvm-null? ?object)
(&&host/compile-jvm-null? compile-expression ?object)
- (&a/$jvm-new ?class ?classes ?args)
+ (&o/$jvm-new ?class ?classes ?args)
(&&host/compile-jvm-new compile-expression ?class ?classes ?args)
- (&a/$jvm-getstatic ?class ?field ?output-type)
+ (&o/$jvm-getstatic ?class ?field ?output-type)
(&&host/compile-jvm-getstatic compile-expression ?class ?field ?output-type)
- (&a/$jvm-getfield ?class ?field ?object ?output-type)
+ (&o/$jvm-getfield ?class ?field ?object ?output-type)
(&&host/compile-jvm-getfield compile-expression ?class ?field ?object ?output-type)
- (&a/$jvm-putstatic ?class ?field ?value ?output-type)
+ (&o/$jvm-putstatic ?class ?field ?value ?output-type)
(&&host/compile-jvm-putstatic compile-expression ?class ?field ?value)
- (&a/$jvm-putfield ?class ?field ?value ?object ?output-type)
+ (&o/$jvm-putfield ?class ?field ?value ?object ?output-type)
(&&host/compile-jvm-putfield compile-expression ?class ?field ?object ?value)
- (&a/$jvm-invokestatic ?class ?method ?classes ?args ?output-type)
+ (&o/$jvm-invokestatic ?class ?method ?classes ?args ?output-type)
(&&host/compile-jvm-invokestatic compile-expression ?class ?method ?classes ?args ?output-type)
- (&a/$jvm-invokevirtual ?class ?method ?classes ?object ?args ?output-type)
+ (&o/$jvm-invokevirtual ?class ?method ?classes ?object ?args ?output-type)
(&&host/compile-jvm-invokevirtual compile-expression ?class ?method ?classes ?object ?args ?output-type)
- (&a/$jvm-invokeinterface ?class ?method ?classes ?object ?args ?output-type)
+ (&o/$jvm-invokeinterface ?class ?method ?classes ?object ?args ?output-type)
(&&host/compile-jvm-invokeinterface compile-expression ?class ?method ?classes ?object ?args ?output-type)
- (&a/$jvm-invokespecial ?class ?method ?classes ?object ?args ?output-type)
+ (&o/$jvm-invokespecial ?class ?method ?classes ?object ?args ?output-type)
(&&host/compile-jvm-invokespecial compile-expression ?class ?method ?classes ?object ?args ?output-type)
- (&a/$jvm-znewarray ?length)
+ (&o/$jvm-znewarray ?length)
(&&host/compile-jvm-znewarray compile-expression ?length)
- (&a/$jvm-zastore ?array ?idx ?elem)
+ (&o/$jvm-zastore ?array ?idx ?elem)
(&&host/compile-jvm-zastore compile-expression ?array ?idx ?elem)
- (&a/$jvm-zaload ?array ?idx)
+ (&o/$jvm-zaload ?array ?idx)
(&&host/compile-jvm-zaload compile-expression ?array ?idx)
- (&a/$jvm-bnewarray ?length)
+ (&o/$jvm-bnewarray ?length)
(&&host/compile-jvm-bnewarray compile-expression ?length)
- (&a/$jvm-bastore ?array ?idx ?elem)
+ (&o/$jvm-bastore ?array ?idx ?elem)
(&&host/compile-jvm-bastore compile-expression ?array ?idx ?elem)
- (&a/$jvm-baload ?array ?idx)
+ (&o/$jvm-baload ?array ?idx)
(&&host/compile-jvm-baload compile-expression ?array ?idx)
- (&a/$jvm-snewarray ?length)
+ (&o/$jvm-snewarray ?length)
(&&host/compile-jvm-snewarray compile-expression ?length)
- (&a/$jvm-sastore ?array ?idx ?elem)
+ (&o/$jvm-sastore ?array ?idx ?elem)
(&&host/compile-jvm-sastore compile-expression ?array ?idx ?elem)
- (&a/$jvm-saload ?array ?idx)
+ (&o/$jvm-saload ?array ?idx)
(&&host/compile-jvm-saload compile-expression ?array ?idx)
- (&a/$jvm-inewarray ?length)
+ (&o/$jvm-inewarray ?length)
(&&host/compile-jvm-inewarray compile-expression ?length)
- (&a/$jvm-iastore ?array ?idx ?elem)
+ (&o/$jvm-iastore ?array ?idx ?elem)
(&&host/compile-jvm-iastore compile-expression ?array ?idx ?elem)
- (&a/$jvm-iaload ?array ?idx)
+ (&o/$jvm-iaload ?array ?idx)
(&&host/compile-jvm-iaload compile-expression ?array ?idx)
- (&a/$jvm-lnewarray ?length)
+ (&o/$jvm-lnewarray ?length)
(&&host/compile-jvm-lnewarray compile-expression ?length)
- (&a/$jvm-lastore ?array ?idx ?elem)
+ (&o/$jvm-lastore ?array ?idx ?elem)
(&&host/compile-jvm-lastore compile-expression ?array ?idx ?elem)
- (&a/$jvm-laload ?array ?idx)
+ (&o/$jvm-laload ?array ?idx)
(&&host/compile-jvm-laload compile-expression ?array ?idx)
- (&a/$jvm-fnewarray ?length)
+ (&o/$jvm-fnewarray ?length)
(&&host/compile-jvm-fnewarray compile-expression ?length)
- (&a/$jvm-fastore ?array ?idx ?elem)
+ (&o/$jvm-fastore ?array ?idx ?elem)
(&&host/compile-jvm-fastore compile-expression ?array ?idx ?elem)
- (&a/$jvm-faload ?array ?idx)
+ (&o/$jvm-faload ?array ?idx)
(&&host/compile-jvm-faload compile-expression ?array ?idx)
- (&a/$jvm-dnewarray ?length)
+ (&o/$jvm-dnewarray ?length)
(&&host/compile-jvm-dnewarray compile-expression ?length)
- (&a/$jvm-dastore ?array ?idx ?elem)
+ (&o/$jvm-dastore ?array ?idx ?elem)
(&&host/compile-jvm-dastore compile-expression ?array ?idx ?elem)
- (&a/$jvm-daload ?array ?idx)
+ (&o/$jvm-daload ?array ?idx)
(&&host/compile-jvm-daload compile-expression ?array ?idx)
- (&a/$jvm-cnewarray ?length)
+ (&o/$jvm-cnewarray ?length)
(&&host/compile-jvm-cnewarray compile-expression ?length)
- (&a/$jvm-castore ?array ?idx ?elem)
+ (&o/$jvm-castore ?array ?idx ?elem)
(&&host/compile-jvm-castore compile-expression ?array ?idx ?elem)
- (&a/$jvm-caload ?array ?idx)
+ (&o/$jvm-caload ?array ?idx)
(&&host/compile-jvm-caload compile-expression ?array ?idx)
- (&a/$jvm-anewarray ?class ?length)
+ (&o/$jvm-anewarray ?class ?length)
(&&host/compile-jvm-anewarray compile-expression ?class ?length)
- (&a/$jvm-aastore ?array ?idx ?elem)
+ (&o/$jvm-aastore ?array ?idx ?elem)
(&&host/compile-jvm-aastore compile-expression ?array ?idx ?elem)
- (&a/$jvm-aaload ?array ?idx)
+ (&o/$jvm-aaload ?array ?idx)
(&&host/compile-jvm-aaload compile-expression ?array ?idx)
- (&a/$jvm-arraylength ?array)
+ (&o/$jvm-arraylength ?array)
(&&host/compile-jvm-arraylength compile-expression ?array)
- (&a/$jvm-try ?body ?catches ?finally)
+ (&o/$jvm-try ?body ?catches ?finally)
(&&host/compile-jvm-try compile-expression ?body ?catches ?finally)
- (&a/$jvm-throw ?ex)
+ (&o/$jvm-throw ?ex)
(&&host/compile-jvm-throw compile-expression ?ex)
- (&a/$jvm-monitorenter ?monitor)
+ (&o/$jvm-monitorenter ?monitor)
(&&host/compile-jvm-monitorenter compile-expression ?monitor)
- (&a/$jvm-monitorexit ?monitor)
+ (&o/$jvm-monitorexit ?monitor)
(&&host/compile-jvm-monitorexit compile-expression ?monitor)
- (&a/$jvm-d2f ?value)
+ (&o/$jvm-d2f ?value)
(&&host/compile-jvm-d2f compile-expression ?value)
- (&a/$jvm-d2i ?value)
+ (&o/$jvm-d2i ?value)
(&&host/compile-jvm-d2i compile-expression ?value)
- (&a/$jvm-d2l ?value)
+ (&o/$jvm-d2l ?value)
(&&host/compile-jvm-d2l compile-expression ?value)
- (&a/$jvm-f2d ?value)
+ (&o/$jvm-f2d ?value)
(&&host/compile-jvm-f2d compile-expression ?value)
- (&a/$jvm-f2i ?value)
+ (&o/$jvm-f2i ?value)
(&&host/compile-jvm-f2i compile-expression ?value)
- (&a/$jvm-f2l ?value)
+ (&o/$jvm-f2l ?value)
(&&host/compile-jvm-f2l compile-expression ?value)
- (&a/$jvm-i2b ?value)
+ (&o/$jvm-i2b ?value)
(&&host/compile-jvm-i2b compile-expression ?value)
- (&a/$jvm-i2c ?value)
+ (&o/$jvm-i2c ?value)
(&&host/compile-jvm-i2c compile-expression ?value)
- (&a/$jvm-i2d ?value)
+ (&o/$jvm-i2d ?value)
(&&host/compile-jvm-i2d compile-expression ?value)
- (&a/$jvm-i2f ?value)
+ (&o/$jvm-i2f ?value)
(&&host/compile-jvm-i2f compile-expression ?value)
- (&a/$jvm-i2l ?value)
+ (&o/$jvm-i2l ?value)
(&&host/compile-jvm-i2l compile-expression ?value)
- (&a/$jvm-i2s ?value)
+ (&o/$jvm-i2s ?value)
(&&host/compile-jvm-i2s compile-expression ?value)
- (&a/$jvm-l2d ?value)
+ (&o/$jvm-l2d ?value)
(&&host/compile-jvm-l2d compile-expression ?value)
- (&a/$jvm-l2f ?value)
+ (&o/$jvm-l2f ?value)
(&&host/compile-jvm-l2f compile-expression ?value)
- (&a/$jvm-l2i ?value)
+ (&o/$jvm-l2i ?value)
(&&host/compile-jvm-l2i compile-expression ?value)
- (&a/$jvm-iand ?x ?y)
+ (&o/$jvm-iand ?x ?y)
(&&host/compile-jvm-iand compile-expression ?x ?y)
- (&a/$jvm-ior ?x ?y)
+ (&o/$jvm-ior ?x ?y)
(&&host/compile-jvm-ior compile-expression ?x ?y)
- (&a/$jvm-ixor ?x ?y)
+ (&o/$jvm-ixor ?x ?y)
(&&host/compile-jvm-ixor compile-expression ?x ?y)
- (&a/$jvm-ishl ?x ?y)
+ (&o/$jvm-ishl ?x ?y)
(&&host/compile-jvm-ishl compile-expression ?x ?y)
- (&a/$jvm-ishr ?x ?y)
+ (&o/$jvm-ishr ?x ?y)
(&&host/compile-jvm-ishr compile-expression ?x ?y)
- (&a/$jvm-iushr ?x ?y)
+ (&o/$jvm-iushr ?x ?y)
(&&host/compile-jvm-iushr compile-expression ?x ?y)
- (&a/$jvm-land ?x ?y)
+ (&o/$jvm-land ?x ?y)
(&&host/compile-jvm-land compile-expression ?x ?y)
- (&a/$jvm-lor ?x ?y)
+ (&o/$jvm-lor ?x ?y)
(&&host/compile-jvm-lor compile-expression ?x ?y)
- (&a/$jvm-lxor ?x ?y)
+ (&o/$jvm-lxor ?x ?y)
(&&host/compile-jvm-lxor compile-expression ?x ?y)
- (&a/$jvm-lshl ?x ?y)
+ (&o/$jvm-lshl ?x ?y)
(&&host/compile-jvm-lshl compile-expression ?x ?y)
- (&a/$jvm-lshr ?x ?y)
+ (&o/$jvm-lshr ?x ?y)
(&&host/compile-jvm-lshr compile-expression ?x ?y)
- (&a/$jvm-lushr ?x ?y)
+ (&o/$jvm-lushr ?x ?y)
(&&host/compile-jvm-lushr compile-expression ?x ?y)
- (&a/$jvm-instanceof ?class ?object)
+ (&o/$jvm-instanceof ?class ?object)
(&&host/compile-jvm-instanceof compile-expression ?class ?object)
_
@@ -422,19 +423,19 @@
(defn ^:private compile-token [syntax]
(|case syntax
- (&a/$def ?name ?body)
+ (&o/$def ?name ?body)
(&&lux/compile-def compile-expression ?name ?body)
- (&a/$declare-macro ?module ?name)
+ (&o/$declare-macro ?module ?name)
(&&lux/compile-declare-macro compile-expression ?module ?name)
- (&a/$jvm-program ?body)
+ (&o/$jvm-program ?body)
(&&host/compile-jvm-program compile-expression ?body)
- (&a/$jvm-interface ?name ?supers ?anns ?methods)
+ (&o/$jvm-interface ?name ?supers ?anns ?methods)
(&&host/compile-jvm-interface compile-expression ?name ?supers ?anns ?methods)
- (&a/$jvm-class ?name ?super-class ?interfaces ?anns ?fields ?methods ??env)
+ (&o/$jvm-class ?name ?super-class ?interfaces ?anns ?fields ?methods ??env)
(&&host/compile-jvm-class compile-expression ?name ?super-class ?interfaces ?anns ?fields ?methods ??env)
_