aboutsummaryrefslogtreecommitdiff
path: root/src/lux/compiler/host.clj
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lux/compiler/host.clj68
1 files changed, 34 insertions, 34 deletions
diff --git a/src/lux/compiler/host.clj b/src/lux/compiler/host.clj
index 40ad7bb6d..f289ed6ba 100644
--- a/src/lux/compiler/host.clj
+++ b/src/lux/compiler/host.clj
@@ -4,7 +4,7 @@
[template :refer [do-template]])
[clojure.core.match :as M :refer [match matchv]]
clojure.core.match.array
- (lux [base :as & :refer [exec return* return fail fail* |let]]
+ (lux [base :as & :refer [|do return* return fail fail* |let]]
[type :as &type]
[lexer :as &lexer]
[parser :as &parser]
@@ -62,7 +62,7 @@
;; [Resources]
(do-template [<name> <opcode> <wrapper-class> <value-method> <value-method-sig> <wrapper-method> <wrapper-method-sig>]
(defn <name> [compile *type* ?x ?y]
- (exec [:let [+wrapper-class+ (&host/->class <wrapper-class>)]
+ (|do [:let [+wrapper-class+ (&host/->class <wrapper-class>)]
*writer* &/get-writer
_ (compile ?x)
:let [_ (doto *writer*
@@ -104,7 +104,7 @@
(do-template [<name> <opcode> <wrapper-class> <value-method> <value-method-sig>]
(defn <name> [compile *type* ?x ?y]
- (exec [:let [+wrapper-class+ (&host/->class <wrapper-class>)]
+ (|do [:let [+wrapper-class+ (&host/->class <wrapper-class>)]
*writer* &/get-writer
_ (compile ?x)
:let [_ (doto *writer*
@@ -132,7 +132,7 @@
(do-template [<name> <cmpcode> <ifcode> <wrapper-class> <value-method> <value-method-sig>]
(defn <name> [compile *type* ?x ?y]
- (exec [:let [+wrapper-class+ (&host/->class <wrapper-class>)]
+ (|do [:let [+wrapper-class+ (&host/->class <wrapper-class>)]
*writer* &/get-writer
_ (compile ?x)
:let [_ (doto *writer*
@@ -168,10 +168,10 @@
)
(defn compile-jvm-invokestatic [compile *type* ?class ?method ?classes ?args]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [method-sig (str "(" (reduce str "" (map &host/->type-signature ?classes)) ")" (&host/->java-sig *type*))]
_ (&/map% (fn [[class-name arg]]
- (exec [ret (compile arg)
+ (|do [ret (compile arg)
:let [_ (prepare-arg! *writer* class-name)]]
(return ret)))
(map vector ?classes ?args))
@@ -183,13 +183,13 @@
(do-template [<name> <op>]
(defn <name> [compile *type* ?class ?method ?classes ?object ?args]
;; (prn 'compile-jvm-invokevirtual ?classes *type*)
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [method-sig (str "(" (&/fold str "" (&/|map &host/->type-signature ?classes)) ")" (&host/->java-sig *type*))]
_ (compile ?object)
:let [_ (.visitTypeInsn *writer* Opcodes/CHECKCAST (&host/->class ?class))]
_ (&/map% (fn [class-name+arg]
(|let [[class-name arg] class-name+arg]
- (exec [ret (compile arg)
+ (|do [ret (compile arg)
:let [_ (prepare-arg! *writer* class-name)]]
(return ret))))
(&/zip2 ?classes ?args))
@@ -204,12 +204,12 @@
)
(defn compile-jvm-null [compile *type*]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [_ (.visitInsn *writer* Opcodes/ACONST_NULL)]]
(return nil)))
(defn compile-jvm-null? [compile *type* ?object]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?object)
:let [$then (new Label)
$end (new Label)
@@ -223,14 +223,14 @@
(return nil)))
(defn compile-jvm-new [compile *type* ?class ?classes ?args]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [init-sig (str "(" (reduce str "" (map &host/->type-signature ?classes)) ")V")
class* (&host/->class ?class)
_ (doto *writer*
(.visitTypeInsn Opcodes/NEW class*)
(.visitInsn Opcodes/DUP))]
_ (&/map% (fn [[class-name arg]]
- (exec [ret (compile arg)
+ (|do [ret (compile arg)
:let [_ (prepare-arg! *writer* class-name)]]
(return ret)))
(map vector ?classes ?args))
@@ -239,14 +239,14 @@
(return nil)))
(defn compile-jvm-new-array [compile *type* ?class ?length]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [_ (doto *writer*
(.visitLdcInsn (int ?length))
(.visitTypeInsn Opcodes/ANEWARRAY (&host/->class ?class)))]]
(return nil)))
(defn compile-jvm-aastore [compile *type* ?array ?idx ?elem]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?array)
:let [_ (doto *writer*
(.visitInsn Opcodes/DUP)
@@ -256,7 +256,7 @@
(return nil)))
(defn compile-jvm-aaload [compile *type* ?array ?idx]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?array)
:let [_ (doto *writer*
(.visitLdcInsn (int ?idx))
@@ -264,25 +264,25 @@
(return nil)))
(defn compile-jvm-getstatic [compile *type* ?class ?field]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [_ (.visitFieldInsn *writer* Opcodes/GETSTATIC (&host/->class ?class) ?field (&host/->java-sig *type*))]]
(return nil)))
(defn compile-jvm-getfield [compile *type* ?class ?field ?object]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?object)
:let [_ (.visitTypeInsn *writer* Opcodes/CHECKCAST (&host/->class ?class))]
:let [_ (.visitFieldInsn *writer* Opcodes/GETFIELD (&host/->class ?class) ?field (&host/->java-sig *type*))]]
(return nil)))
(defn compile-jvm-putstatic [compile *type* ?class ?field ?value]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?value)
:let [_ (.visitFieldInsn *writer* Opcodes/PUTSTATIC (&host/->class ?class) ?field (&host/->java-sig *type*))]]
(return nil)))
(defn compile-jvm-putfield [compile *type* ?class ?field ?object ?value]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?object)
_ (compile ?value)
:let [_ (.visitTypeInsn *writer* Opcodes/CHECKCAST (&host/->class ?class))]
@@ -328,10 +328,10 @@
;; (prn 'SAVED_CLASS full-name)
(&&/save-class! full-name (.toByteArray =interface))))
-(defn compile-exec [compile *type* ?exprs]
- (exec [*writer* &/get-writer
+(defn compile-|do [compile *type* ?exprs]
+ (|do [*writer* &/get-writer
_ (&/map% (fn [expr]
- (exec [ret (compile expr)
+ (|do [ret (compile expr)
:let [_ (.visitInsn *writer* Opcodes/POP)]]
(return ret)))
(butlast ?exprs))
@@ -339,19 +339,19 @@
(return nil)))
(defn compile-jvm-try [compile *type* ?body ?catches ?finally]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [$from (new Label)
$to (new Label)
$end (new Label)
$catch-finally (new Label)
compile-finally (if ?finally
- (exec [_ (return nil)
+ (|do [_ (return nil)
_ (compile ?finally)
:let [_ (doto *writer*
(.visitInsn Opcodes/POP)
(.visitJumpInsn Opcodes/GOTO $end))]]
(return nil))
- (exec [_ (return nil)
+ (|do [_ (return nil)
:let [_ (.visitJumpInsn *writer* Opcodes/GOTO $end)]]
(return nil)))
_ (.visitLabel *writer* $from)]
@@ -359,7 +359,7 @@
:let [_ (.visitLabel *writer* $to)]
_ compile-finally
handlers (&/map% (fn [[?ex-class ?ex-arg ?catch-body]]
- (exec [:let [$handler-start (new Label)
+ (|do [:let [$handler-start (new Label)
$handler-end (new Label)]
_ (compile ?catch-body)
:let [_ (.visitLabel *writer* $handler-end)]
@@ -368,12 +368,12 @@
?catches)
:let [_ (.visitLabel *writer* $catch-finally)]
_ (if ?finally
- (exec [_ (compile ?finally)
+ (|do [_ (compile ?finally)
:let [_ (doto *writer*
(.visitInsn Opcodes/POP)
(.visitInsn Opcodes/ATHROW))]]
(return nil))
- (exec [_ (return nil)
+ (|do [_ (return nil)
:let [_ (.visitInsn *writer* Opcodes/ATHROW)]]
(return nil)))
:let [_ (.visitJumpInsn *writer* Opcodes/GOTO $end)]
@@ -387,14 +387,14 @@
(return nil)))
(defn compile-jvm-throw [compile *type* ?ex]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?ex)
:let [_ (.visitInsn *writer* Opcodes/ATHROW)]]
(return nil)))
(do-template [<name> <op>]
(defn <name> [compile *type* ?monitor]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?monitor)
:let [_ (doto *writer*
(.visitInsn <op>)
@@ -407,7 +407,7 @@
(do-template [<name> <op> <from-class> <from-method> <from-sig> <to-class> <to-sig>]
(defn <name> [compile *type* ?value]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [_ (doto *writer*
(.visitTypeInsn Opcodes/NEW (&host/->class <to-class>))
(.visitInsn Opcodes/DUP))]
@@ -440,7 +440,7 @@
(do-template [<name> <op> <from1-method> <from1-sig> <from1-class> <from2-method> <from2-sig> <from2-class> <to-class> <to-sig>]
(defn <name> [compile *type* ?x ?y]
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
:let [_ (doto *writer*
(.visitTypeInsn Opcodes/NEW (&host/->class <to-class>))
(.visitInsn Opcodes/DUP))]
@@ -466,10 +466,10 @@
)
(defn compile-jvm-program [compile *type* ?body]
- (exec [*writer* &/get-writer]
+ (|do [*writer* &/get-writer]
(&/with-writer (doto (.visitMethod *writer* (+ Opcodes/ACC_PUBLIC Opcodes/ACC_STATIC) "main" "([Ljava/lang/String;)V" nil nil)
(.visitCode))
- (exec [*writer* &/get-writer
+ (|do [*writer* &/get-writer
_ (compile ?body)
:let [_ (doto *writer*
(.visitInsn Opcodes/POP)