aboutsummaryrefslogtreecommitdiff
path: root/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux
diff options
context:
space:
mode:
Diffstat (limited to 'lux-jvm/source/luxc/lang/translation/jvm/runtime.lux')
-rw-r--r--lux-jvm/source/luxc/lang/translation/jvm/runtime.lux27
1 files changed, 15 insertions, 12 deletions
diff --git a/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux b/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux
index 1cad5569f..e7a37584e 100644
--- a/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux
+++ b/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux
@@ -1,7 +1,8 @@
(.module:
[lux (#- Type)
[abstract
- [monad (#+ do)]]
+ [monad (#+ do)]
+ ["." enum]]
[data
[binary (#+ Binary)]
["." product]
@@ -9,7 +10,9 @@
["%" format (#+ format)]]
[collection
["." list ("#@." functor)]
- ["." row]]]
+ ["." row]]
+ [number
+ ["n" nat]]]
["." math]
[target
[jvm
@@ -339,18 +342,18 @@
frac-methods
pm-methods
io-methods))
- payload ["0" bytecode]]
+ directive [runtime-class bytecode]]
(do phase.monad
- [_ (generation.execute! runtime-class [runtime-class bytecode])
- _ (generation.save! false ["" "0"] payload)]
- (wrap payload))))
+ [_ (generation.execute! directive)
+ _ (generation.save! "0" directive)]
+ (wrap ["0" bytecode]))))
(def: translate-function
(Operation [Text Binary])
- (let [applyI (|> (list.n/range 2 num-apply-variants)
+ (let [applyI (|> (enum.range n.enum 2 num-apply-variants)
(list@map (function (_ arity)
($d.method #$.Public $.noneM apply-method (apply-signature arity)
- (let [preI (|> (list.n/range 0 (dec arity))
+ (let [preI (|> (enum.range n.enum 0 (dec arity))
(list@map _.ALOAD)
_.fuse)]
(|>> preI
@@ -373,11 +376,11 @@
(_.PUTFIELD //.$Function partials-field type.int)
_.RETURN))
applyI))
- payload ["1" bytecode]]
+ directive [function-class bytecode]]
(do phase.monad
- [_ (generation.execute! function-class [function-class bytecode])
- _ (generation.save! false ["" "1"] payload)]
- (wrap payload))))
+ [_ (generation.execute! directive)
+ _ (generation.save! "1" directive)]
+ (wrap ["1" bytecode]))))
(def: #export translate
(Operation [Registry Output])