diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/lux/tool/compiler/generation.lux (renamed from stdlib/source/lux/tool/compiler/phase/generation.lux) | 26 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux | 32 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/extension.lux | 14 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/jvm/case.lux | 4 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/host.lux | 11 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/jvm/function.lux | 6 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/jvm/loop.lux | 4 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/jvm/packager.lux | 18 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux | 4 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/jvm/runtime.lux | 32 |
10 files changed, 75 insertions, 76 deletions
diff --git a/stdlib/source/lux/tool/compiler/phase/generation.lux b/stdlib/source/lux/tool/compiler/generation.lux index ca2d76965..e29036dd9 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation.lux +++ b/stdlib/source/lux/tool/compiler/generation.lux @@ -14,13 +14,13 @@ ["." row (#+ Row)] ["." dictionary (#+ Dictionary)] ["." list ("#@." functor)]]]] - ["." // - ["." extension] - [// - [synthesis (#+ Synthesis)] - [meta - [archive - [descriptor (#+ Module)]]]]]) + [// + ["." phase + ["." extension]] + [synthesis (#+ Synthesis)] + [meta + [archive + [descriptor (#+ Module)]]]]) (type: #export Registry (Dictionary Name Text)) @@ -206,7 +206,7 @@ (def: #export next (All [anchor expression directive] (Operation anchor expression directive Nat)) - (do //.monad + (do phase.monad [count (extension.read (get@ #counter)) _ (extension.update (update@ #counter inc))] (wrap count))) @@ -214,7 +214,7 @@ (def: #export (gensym prefix) (All [anchor expression directive] (-> Text (Operation anchor expression directive Text))) - (:: //.monad map (|>> %.nat (format prefix)) ..next)) + (:: phase.monad map (|>> %.nat (format prefix)) ..next)) (template [<name> <inputT>] [(def: #export (<name> label code) @@ -246,7 +246,7 @@ (def: #export (save! execute? name code) (All [anchor expression directive] (-> Bit Name directive (Operation anchor expression directive Any))) - (do //.monad + (do phase.monad [label (..gensym "save") _ (if execute? (execute! label code) @@ -255,16 +255,16 @@ (case ?buffer (#.Some buffer) (if (row.any? (|>> product.left (name@= name)) buffer) - (//.throw ..cannot-overwrite-output name) + (phase.throw ..cannot-overwrite-output name) (extension.update (set@ #buffer (#.Some (row.add [name code] buffer))))) #.None - (//.throw no-buffer-for-saving-code name)))) + (phase.throw no-buffer-for-saving-code name)))) (def: #export (save-buffer! target) (All [anchor expression directive] (-> Module (Operation anchor expression directive (Buffer directive)))) - (do //.monad + (do phase.monad [buffer ..buffer _ (extension.update (update@ #output (row.add [target buffer])))] (wrap buffer))) diff --git a/stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux b/stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux index faf7a0c13..084bc8080 100644 --- a/stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux +++ b/stdlib/source/lux/tool/compiler/phase/extension/directive/lux.lux @@ -23,16 +23,16 @@ ["#." bundle] ["#." analysis] ["#/" // - ["#." generation] [analysis ["." module] [".A" type]] ["#/" // #_ - ["#." synthesis (#+ Synthesis)] - ["#." directive (#+ Import Requirements Phase Operation Handler Bundle)] ["#." analysis [macro (#+ Expander)] - ["#/." evaluation]]]]]) + ["#/." evaluation]] + ["#." synthesis (#+ Synthesis)] + ["#." generation] + ["#." directive (#+ Import Requirements Phase Operation Handler Bundle)]]]]) (def: #export (custom [syntax handler]) (All [anchor expression directive s] @@ -53,15 +53,15 @@ ## TODO: Inline "evaluate!'" into "evaluate!" ASAP (def: (evaluate!' generate code//type codeS) (All [anchor expression directive] - (-> (////generation.Phase anchor expression directive) + (-> (/////generation.Phase anchor expression directive) Type Synthesis (Operation anchor expression directive [Type expression Any]))) (/////directive.lift-generation (do ////.monad [codeT (generate codeS) - id ////generation.next - codeV (////generation.evaluate! (format "evaluate" (%.nat id)) codeT)] + id /////generation.next + codeV (/////generation.evaluate! (format "evaluate" (%.nat id)) codeT)] (wrap [code//type codeT codeV])))) (def: #export (evaluate! type codeC) @@ -84,7 +84,7 @@ ## TODO: Inline "definition'" into "definition" ASAP (def: (definition' generate name code//type codeS) (All [anchor expression directive] - (-> (////generation.Phase anchor expression directive) + (-> (/////generation.Phase anchor expression directive) Name Type Synthesis @@ -92,8 +92,8 @@ (/////directive.lift-generation (do ////.monad [codeT (generate codeS) - [target-name value directive] (////generation.define! name codeT) - _ (////generation.save! false name directive)] + [target-name value directive] (/////generation.define! name codeT) + _ (/////generation.save! false name directive)] (wrap [code//type codeT target-name value])))) (def: (definition name expected codeC) @@ -156,7 +156,7 @@ (module.define short-name (#.Right [exported? type (:coerce Code annotations) value]))) #let [_ (log! (format "Definition " (%.name full-name)))] _ (/////directive.lift-generation - (////generation.learn full-name valueN)) + (/////generation.learn full-name valueN)) _ (..refresh expander host-analysis)] (wrap /////directive.no-requirements)) @@ -181,7 +181,7 @@ (module.declare-tags tags exported? (:coerce Type value)))) #let [_ (log! (format "Definition " (%.name full-name)))] _ (/////directive.lift-generation - (////generation.learn full-name valueN)) + (/////generation.learn full-name valueN)) _ (..refresh expander host-analysis)] (wrap /////directive.no-requirements)))])) @@ -272,7 +272,7 @@ ["Analysis" def::analysis /////analysis.Handler /////directive.lift-analysis] ["Synthesis" def::synthesis /////synthesis.Handler /////directive.lift-synthesis] - ["Generation" def::generation (////generation.Handler anchor expression directive) /////directive.lift-generation] + ["Generation" def::generation (/////generation.Handler anchor expression directive) /////directive.lift-generation] ["Directive" def::directive (/////directive.Handler anchor expression directive) (<|)] ) @@ -296,13 +296,13 @@ (def: (define-program generate program programS) (All [anchor expression directive output] - (-> (////generation.Phase anchor expression directive) + (-> (/////generation.Phase anchor expression directive) (-> expression directive) Synthesis - (////generation.Operation anchor expression directive Any))) + (/////generation.Operation anchor expression directive Any))) (do ////.monad [programG (generate programS)] - (////generation.save! false ["" ""] (program programG)))) + (/////generation.save! false ["" ""] (program programG)))) (def: (def::program program) (All [anchor expression directive] diff --git a/stdlib/source/lux/tool/compiler/phase/generation/extension.lux b/stdlib/source/lux/tool/compiler/phase/generation/extension.lux index 91e1b661c..d0de3e920 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/extension.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/extension.lux @@ -11,11 +11,11 @@ ["." macro (#+ with-gensyms) ["." code] [syntax (#+ syntax:)]]] - ["." // - ["#/" // - ["#." extension] - [// - [synthesis (#+ Synthesis)]]]]) + ["." /// + ["#." extension] + [// + [synthesis (#+ Synthesis)] + ["." generation]]]) (syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) @@ -32,7 +32,7 @@ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] (wrap (list (` (def: #export ((~ (code.local-identifier name)) (~ g!extension)) (All [(~ g!anchor) (~ g!expression) (~ g!directive)] - (-> ((~ type) (~ g!expression)) (//.Handler (~ g!anchor) (~ g!expression) (~ g!directive)))) + (-> ((~ type) (~ g!expression)) (generation.Handler (~ g!anchor) (~ g!expression) (~ g!directive)))) (function ((~ g!_) (~ g!name) (~ g!phase) (~ g!inputs)) (case (~ g!inputs) (^ (list (~+ g!input+))) @@ -53,7 +53,7 @@ (def: #export (variadic extension) (All [anchor expression directive] - (-> (Variadic expression) (//.Handler anchor expression directive))) + (-> (Variadic expression) (generation.Handler anchor expression directive))) (function (_ extension-name) (function (_ phase inputsS) (do ///.monad diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/case.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/case.lux index cdb84ad6a..7f33f383b 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/case.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/case.lux @@ -20,8 +20,8 @@ [//// [reference (#+ Register)] ["." synthesis (#+ Path Synthesis)] - ["." phase ("operation@." monad) - ["." generation]]]]) + ["." generation] + ["." phase ("operation@." monad)]]]) (def: equals-name "equals") diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/host.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/host.lux index 7b14d2c07..84af963d2 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/host.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/host.lux @@ -49,7 +49,7 @@ [variable ["." foreign]]]] ["//#" /// - ["." generation + [generation [extension (#+ Nullary Unary Binary Trinary Variadic nullary unary binary trinary variadic)]] [extension @@ -57,9 +57,10 @@ [analysis ["/" jvm]]] ["/#" // - [analysis (#+ Environment)] ["#." reference (#+ Variable)] - ["#." synthesis (#+ Synthesis Path %synthesis)]]]]]) + [analysis (#+ Environment)] + ["#." synthesis (#+ Synthesis Path %synthesis)] + ["#." generation]]]]]) (template [<name> <0> <1>] [(def: <name> @@ -1032,7 +1033,7 @@ self-name arguments returnT exceptionsT bodyS]) (do @ - [bodyG (generation.with-specific-context class-name + [bodyG (//////generation.with-specific-context class-name (generate bodyS))] (wrap (method.method ($_ modifier@compose method.public @@ -1059,7 +1060,7 @@ (list& (..with-anonymous-init class total-environment super-class inputsTI) method-definitions) (row.row))) - _ (generation.save! true ["" class-name] [class-name bytecode])] + _ (//////generation.save! true ["" class-name] [class-name bytecode])] (anonymous-instance class total-environment)))])) (def: bundle::class diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/function.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/function.lux index c5b18f6b3..8e7d51475 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/function.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/function.lux @@ -44,12 +44,12 @@ ["/#" // #_ ["#." runtime (#+ Operation Phase)] [//// + ["." arity (#+ Arity)] [reference (#+ Register)] [analysis (#+ Environment)] [synthesis (#+ Synthesis Abstraction Apply)] - ["." arity (#+ Arity)] - ["." phase - ["." generation]]]]]) + ["." generation] + ["." phase]]]]) (def: #export (with @begin class environment arity body) (-> Label External Environment Arity (Bytecode Any) diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/loop.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/loop.lux index f27dbc269..00ceb8ca4 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/loop.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/loop.lux @@ -19,8 +19,8 @@ [//// [reference (#+ Register)] ["." synthesis (#+ Path Synthesis)] - ["." phase - ["." generation]]]]) + ["." generation] + ["." phase]]]) (def: (invariant? register changeS) (-> Register Synthesis Bit) diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/packager.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/packager.lux index 9400adf1a..983ac3d1a 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/packager.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/packager.lux @@ -12,16 +12,14 @@ [target [jvm [encoding - ["." name (#+ External)]]]] - [tool - [compiler - [phase - [generation (#+ Buffer Output) - [jvm - [runtime (#+ Definition)]]]] - [meta - [archive - [descriptor (#+ Module)]]]]]]) + ["." name (#+ External)]]]]] + [// + [runtime (#+ Definition)] + [//// + [generation (#+ Buffer Output)] + [meta + [archive + [descriptor (#+ Module)]]]]]) (import: #long java/lang/Object) diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux index 13f6bb846..59115f815 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/reference.lux @@ -16,9 +16,9 @@ ["#." value] ["#." type] ["//#" /// ("operation@." monad) - ["." generation] [// - ["." reference (#+ Register Variable)]]]]) + ["." reference (#+ Register Variable)] + ["." generation]]]]) (def: #export this (Bytecode Any) diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/runtime.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/runtime.lux index 5968ed6c8..bd9cc1850 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/runtime.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/runtime.lux @@ -41,12 +41,12 @@ [variable [partial ["#/." count]]]]] - ["/#" // - ["/#" // - [// - [arity (#+ Arity)] - [reference (#+ Register)] - ["." synthesis]]]]]) + ["//#" /// + [// + [arity (#+ Arity)] + [reference (#+ Register)] + ["." synthesis] + ["." generation]]]]) (type: #export Byte-Code Binary) @@ -58,17 +58,17 @@ [(type: #export <name> (<base> Anchor (Bytecode Any) Definition))] - [Operation ///.Operation] - [Phase ///.Phase] - [Handler ///.Handler] - [Bundle ///.Bundle] + [Operation generation.Operation] + [Phase generation.Phase] + [Handler generation.Handler] + [Bundle generation.Bundle] ) (type: #export (Generator i) (-> Phase i (Operation (Bytecode Any)))) (type: #export Host - (///.Host (Bytecode Any) Definition)) + (generation.Host (Bytecode Any) Definition)) (def: #export class (type.class "LuxRuntime" (list))) @@ -513,8 +513,8 @@ ..try::method)) (row.row)))] (do ////.monad - [_ (///.execute! class [class bytecode])] - (///.save! .false ["" class] [class bytecode])))) + [_ (generation.execute! class [class bytecode])] + (generation.save! .false ["" class] [class bytecode])))) (def: generate-function (Operation Any) @@ -569,8 +569,8 @@ (list& <init>::method apply::method+) (row.row)))] (do ////.monad - [_ (///.execute! class [class bytecode])] - (///.save! .false ["" class] [class bytecode])))) + [_ (generation.execute! class [class bytecode])] + (generation.save! .false ["" class] [class bytecode])))) (def: #export generate (Operation Any) @@ -584,4 +584,4 @@ ## This shift is done to avoid the possibility of forged labels ## to be in the range of the labels that are generated automatically ## during the evaluation of Bytecode expressions. - (:: ////.monad map (i64.left-shift shift) ///.next))) + (:: ////.monad map (i64.left-shift shift) generation.next))) |