aboutsummaryrefslogtreecommitdiff
path: root/lux-jvm
diff options
context:
space:
mode:
authorEduardo Julian2022-02-03 05:55:42 -0400
committerEduardo Julian2022-02-03 05:55:42 -0400
commite4bc4d0e2cd14a955530160c4fc7859e6c46874e (patch)
tree946e713bdf44e63d67fbaca8c778a9a7faba3592 /lux-jvm
parentd432d4fc3990a073e8df091962ac1f39c9745803 (diff)
Fixes for the pure-Lux JVM compiler machinery. [Part 13 / Done!]
Diffstat (limited to 'lux-jvm')
-rw-r--r--lux-jvm/source/luxc/lang/directive/jvm.lux996
-rw-r--r--lux-jvm/source/luxc/lang/translation/jvm.lux85
-rw-r--r--lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux4
-rw-r--r--lux-jvm/source/luxc/lang/translation/jvm/function.lux7
-rw-r--r--lux-jvm/source/luxc/lang/translation/jvm/program.lux50
-rw-r--r--lux-jvm/source/luxc/lang/translation/jvm/runtime.lux87
6 files changed, 617 insertions, 612 deletions
diff --git a/lux-jvm/source/luxc/lang/directive/jvm.lux b/lux-jvm/source/luxc/lang/directive/jvm.lux
index 3960a3532..a3b28b710 100644
--- a/lux-jvm/source/luxc/lang/directive/jvm.lux
+++ b/lux-jvm/source/luxc/lang/directive/jvm.lux
@@ -56,7 +56,7 @@
["[0]/" lux]]]]]]
[meta
[archive {"+" Archive}
- ["[0]" artifact]]
+ ["[0]" unit]]
["[0]" cache "_"
["[1]" artifact]]]]]]]
[///
@@ -69,520 +69,520 @@
[extension
["//G" host]]]]])
-(import: org/objectweb/asm/Label
- ["[1]::[0]"
- (new [])])
-
-(def: (literal literal)
- (-> /.Literal Inst)
- (case literal
- {/.#Boolean value} (_.boolean value)
- {/.#Int value} (_.int value)
- {/.#Long value} (_.long value)
- {/.#Double value} (_.double value)
- {/.#Char value} (_.char value)
- {/.#String value} (_.string value)))
-
-(def: (constant instruction)
- (-> /.Constant Inst)
- (case instruction
- {/.#BIPUSH constant} (_.BIPUSH constant)
+... (import: org/objectweb/asm/Label
+... ["[1]::[0]"
+... (new [])])
+
+... (def: (literal literal)
+... (-> /.Literal Inst)
+... (case literal
+... {/.#Boolean value} (_.boolean value)
+... {/.#Int value} (_.int value)
+... {/.#Long value} (_.long value)
+... {/.#Double value} (_.double value)
+... {/.#Char value} (_.char value)
+... {/.#String value} (_.string value)))
+
+... (def: (constant instruction)
+... (-> /.Constant Inst)
+... (case instruction
+... {/.#BIPUSH constant} (_.BIPUSH constant)
- {/.#SIPUSH constant} (_.SIPUSH constant)
-
- {/.#ICONST_M1} _.ICONST_M1
- {/.#ICONST_0} _.ICONST_0
- {/.#ICONST_1} _.ICONST_1
- {/.#ICONST_2} _.ICONST_2
- {/.#ICONST_3} _.ICONST_3
- {/.#ICONST_4} _.ICONST_4
- {/.#ICONST_5} _.ICONST_5
-
- {/.#LCONST_0} _.LCONST_0
- {/.#LCONST_1} _.LCONST_1
+... {/.#SIPUSH constant} (_.SIPUSH constant)
+
+... {/.#ICONST_M1} _.ICONST_M1
+... {/.#ICONST_0} _.ICONST_0
+... {/.#ICONST_1} _.ICONST_1
+... {/.#ICONST_2} _.ICONST_2
+... {/.#ICONST_3} _.ICONST_3
+... {/.#ICONST_4} _.ICONST_4
+... {/.#ICONST_5} _.ICONST_5
+
+... {/.#LCONST_0} _.LCONST_0
+... {/.#LCONST_1} _.LCONST_1
- {/.#FCONST_0} _.FCONST_0
- {/.#FCONST_1} _.FCONST_1
- {/.#FCONST_2} _.FCONST_2
+... {/.#FCONST_0} _.FCONST_0
+... {/.#FCONST_1} _.FCONST_1
+... {/.#FCONST_2} _.FCONST_2
- {/.#DCONST_0} _.DCONST_0
- {/.#DCONST_1} _.DCONST_1
+... {/.#DCONST_0} _.DCONST_0
+... {/.#DCONST_1} _.DCONST_1
- {/.#ACONST_NULL} _.NULL
-
- {/.#LDC literal}
- (..literal literal)
- ))
-
-(def: (int_arithmetic instruction)
- (-> /.Int_Arithmetic Inst)
- (case instruction
- {/.#IADD} _.IADD
- {/.#ISUB} _.ISUB
- {/.#IMUL} _.IMUL
- {/.#IDIV} _.IDIV
- {/.#IREM} _.IREM
- {/.#INEG} _.INEG))
-
-(def: (long_arithmetic instruction)
- (-> /.Long_Arithmetic Inst)
- (case instruction
- {/.#LADD} _.LADD
- {/.#LSUB} _.LSUB
- {/.#LMUL} _.LMUL
- {/.#LDIV} _.LDIV
- {/.#LREM} _.LREM
- {/.#LNEG} _.LNEG))
-
-(def: (float_arithmetic instruction)
- (-> /.Float_Arithmetic Inst)
- (case instruction
- {/.#FADD} _.FADD
- {/.#FSUB} _.FSUB
- {/.#FMUL} _.FMUL
- {/.#FDIV} _.FDIV
- {/.#FREM} _.FREM
- {/.#FNEG} _.FNEG))
-
-(def: (double_arithmetic instruction)
- (-> /.Double_Arithmetic Inst)
- (case instruction
- {/.#DADD} _.DADD
- {/.#DSUB} _.DSUB
- {/.#DMUL} _.DMUL
- {/.#DDIV} _.DDIV
- {/.#DREM} _.DREM
- {/.#DNEG} _.DNEG))
-
-(def: (arithmetic instruction)
- (-> /.Arithmetic Inst)
- (case instruction
- {/.#Int_Arithmetic int_arithmetic}
- (..int_arithmetic int_arithmetic)
+... {/.#ACONST_NULL} _.NULL
+
+... {/.#LDC literal}
+... (..literal literal)
+... ))
+
+... (def: (int_arithmetic instruction)
+... (-> /.Int_Arithmetic Inst)
+... (case instruction
+... {/.#IADD} _.IADD
+... {/.#ISUB} _.ISUB
+... {/.#IMUL} _.IMUL
+... {/.#IDIV} _.IDIV
+... {/.#IREM} _.IREM
+... {/.#INEG} _.INEG))
+
+... (def: (long_arithmetic instruction)
+... (-> /.Long_Arithmetic Inst)
+... (case instruction
+... {/.#LADD} _.LADD
+... {/.#LSUB} _.LSUB
+... {/.#LMUL} _.LMUL
+... {/.#LDIV} _.LDIV
+... {/.#LREM} _.LREM
+... {/.#LNEG} _.LNEG))
+
+... (def: (float_arithmetic instruction)
+... (-> /.Float_Arithmetic Inst)
+... (case instruction
+... {/.#FADD} _.FADD
+... {/.#FSUB} _.FSUB
+... {/.#FMUL} _.FMUL
+... {/.#FDIV} _.FDIV
+... {/.#FREM} _.FREM
+... {/.#FNEG} _.FNEG))
+
+... (def: (double_arithmetic instruction)
+... (-> /.Double_Arithmetic Inst)
+... (case instruction
+... {/.#DADD} _.DADD
+... {/.#DSUB} _.DSUB
+... {/.#DMUL} _.DMUL
+... {/.#DDIV} _.DDIV
+... {/.#DREM} _.DREM
+... {/.#DNEG} _.DNEG))
+
+... (def: (arithmetic instruction)
+... (-> /.Arithmetic Inst)
+... (case instruction
+... {/.#Int_Arithmetic int_arithmetic}
+... (..int_arithmetic int_arithmetic)
- {/.#Long_Arithmetic long_arithmetic}
- (..long_arithmetic long_arithmetic)
+... {/.#Long_Arithmetic long_arithmetic}
+... (..long_arithmetic long_arithmetic)
- {/.#Float_Arithmetic float_arithmetic}
- (..float_arithmetic float_arithmetic)
+... {/.#Float_Arithmetic float_arithmetic}
+... (..float_arithmetic float_arithmetic)
- {/.#Double_Arithmetic double_arithmetic}
- (..double_arithmetic double_arithmetic)))
-
-(def: (int_bitwise instruction)
- (-> /.Int_Bitwise Inst)
- (case instruction
- {/.#IOR} _.IOR
- {/.#IXOR} _.IXOR
- {/.#IAND} _.IAND
- {/.#ISHL} _.ISHL
- {/.#ISHR} _.ISHR
- {/.#IUSHR} _.IUSHR))
-
-(def: (long_bitwise instruction)
- (-> /.Long_Bitwise Inst)
- (case instruction
- {/.#LOR} _.LOR
- {/.#LXOR} _.LXOR
- {/.#LAND} _.LAND
- {/.#LSHL} _.LSHL
- {/.#LSHR} _.LSHR
- {/.#LUSHR} _.LUSHR))
-
-(def: (bitwise instruction)
- (-> /.Bitwise Inst)
- (case instruction
- {/.#Int_Bitwise int_bitwise}
- (..int_bitwise int_bitwise)
+... {/.#Double_Arithmetic double_arithmetic}
+... (..double_arithmetic double_arithmetic)))
+
+... (def: (int_bitwise instruction)
+... (-> /.Int_Bitwise Inst)
+... (case instruction
+... {/.#IOR} _.IOR
+... {/.#IXOR} _.IXOR
+... {/.#IAND} _.IAND
+... {/.#ISHL} _.ISHL
+... {/.#ISHR} _.ISHR
+... {/.#IUSHR} _.IUSHR))
+
+... (def: (long_bitwise instruction)
+... (-> /.Long_Bitwise Inst)
+... (case instruction
+... {/.#LOR} _.LOR
+... {/.#LXOR} _.LXOR
+... {/.#LAND} _.LAND
+... {/.#LSHL} _.LSHL
+... {/.#LSHR} _.LSHR
+... {/.#LUSHR} _.LUSHR))
+
+... (def: (bitwise instruction)
+... (-> /.Bitwise Inst)
+... (case instruction
+... {/.#Int_Bitwise int_bitwise}
+... (..int_bitwise int_bitwise)
- {/.#Long_Bitwise long_bitwise}
- (..long_bitwise long_bitwise)))
-
-(def: (conversion instruction)
- (-> /.Conversion Inst)
- (case instruction
- {/.#I2B} _.I2B
- {/.#I2S} _.I2S
- {/.#I2L} _.I2L
- {/.#I2F} _.I2F
- {/.#I2D} _.I2D
- {/.#I2C} _.I2C
-
- {/.#L2I} _.L2I
- {/.#L2F} _.L2F
- {/.#L2D} _.L2D
-
- {/.#F2I} _.F2I
- {/.#F2L} _.F2L
- {/.#F2D} _.F2D
+... {/.#Long_Bitwise long_bitwise}
+... (..long_bitwise long_bitwise)))
+
+... (def: (conversion instruction)
+... (-> /.Conversion Inst)
+... (case instruction
+... {/.#I2B} _.I2B
+... {/.#I2S} _.I2S
+... {/.#I2L} _.I2L
+... {/.#I2F} _.I2F
+... {/.#I2D} _.I2D
+... {/.#I2C} _.I2C
+
+... {/.#L2I} _.L2I
+... {/.#L2F} _.L2F
+... {/.#L2D} _.L2D
+
+... {/.#F2I} _.F2I
+... {/.#F2L} _.F2L
+... {/.#F2D} _.F2D
- {/.#D2I} _.D2I
- {/.#D2L} _.D2L
- {/.#D2F} _.D2F))
+... {/.#D2I} _.D2I
+... {/.#D2L} _.D2L
+... {/.#D2F} _.D2F))
-(def: (array instruction)
- (-> /.Array Inst)
- (case instruction
- {/.#ARRAYLENGTH} _.ARRAYLENGTH
+... (def: (array instruction)
+... (-> /.Array Inst)
+... (case instruction
+... {/.#ARRAYLENGTH} _.ARRAYLENGTH
- {/.#NEWARRAY type} (_.NEWARRAY type)
- {/.#ANEWARRAY type} (_.ANEWARRAY type)
+... {/.#NEWARRAY type} (_.NEWARRAY type)
+... {/.#ANEWARRAY type} (_.ANEWARRAY type)
- {/.#BALOAD} _.BALOAD
- {/.#BASTORE} _.BASTORE
+... {/.#BALOAD} _.BALOAD
+... {/.#BASTORE} _.BASTORE
- {/.#SALOAD} _.SALOAD
- {/.#SASTORE} _.SASTORE
+... {/.#SALOAD} _.SALOAD
+... {/.#SASTORE} _.SASTORE
- {/.#IALOAD} _.IALOAD
- {/.#IASTORE} _.IASTORE
+... {/.#IALOAD} _.IALOAD
+... {/.#IASTORE} _.IASTORE
- {/.#LALOAD} _.LALOAD
- {/.#LASTORE} _.LASTORE
+... {/.#LALOAD} _.LALOAD
+... {/.#LASTORE} _.LASTORE
- {/.#FALOAD} _.FALOAD
- {/.#FASTORE} _.FASTORE
+... {/.#FALOAD} _.FALOAD
+... {/.#FASTORE} _.FASTORE
- {/.#DALOAD} _.DALOAD
- {/.#DASTORE} _.DASTORE
+... {/.#DALOAD} _.DALOAD
+... {/.#DASTORE} _.DASTORE
- {/.#CALOAD} _.CALOAD
- {/.#CASTORE} _.CASTORE
-
- {/.#AALOAD} _.AALOAD
- {/.#AASTORE} _.AASTORE))
-
-(def: (object instruction)
- (-> /.Object Inst)
- (case instruction
- (^template [<tag> <inst>]
- [{<tag> class field_name field_type}
- (<inst> class field_name field_type)])
- ([/.#GETSTATIC _.GETSTATIC]
- [/.#PUTSTATIC _.PUTSTATIC]
- [/.#GETFIELD _.GETFIELD]
- [/.#PUTFIELD _.PUTFIELD])
+... {/.#CALOAD} _.CALOAD
+... {/.#CASTORE} _.CASTORE
+
+... {/.#AALOAD} _.AALOAD
+... {/.#AASTORE} _.AASTORE))
+
+... (def: (object instruction)
+... (-> /.Object Inst)
+... (case instruction
+... (^template [<tag> <inst>]
+... [{<tag> class field_name field_type}
+... (<inst> class field_name field_type)])
+... ([/.#GETSTATIC _.GETSTATIC]
+... [/.#PUTSTATIC _.PUTSTATIC]
+... [/.#GETFIELD _.GETFIELD]
+... [/.#PUTFIELD _.PUTFIELD])
- {/.#NEW type} (_.NEW type)
+... {/.#NEW type} (_.NEW type)
- {/.#INSTANCEOF type} (_.INSTANCEOF type)
- {/.#CHECKCAST type} (_.CHECKCAST type)
-
- (^template [<tag> <inst>]
- [{<tag> class method_name method_type}
- (<inst> class method_name method_type)])
- ([/.#INVOKEINTERFACE _.INVOKEINTERFACE]
- [/.#INVOKESPECIAL _.INVOKESPECIAL]
- [/.#INVOKESTATIC _.INVOKESTATIC]
- [/.#INVOKEVIRTUAL _.INVOKEVIRTUAL])
- ))
-
-(def: (local_int instruction)
- (-> /.Local_Int Inst)
- (case instruction
- {/.#ILOAD register} (_.ILOAD register)
- {/.#ISTORE register} (_.ISTORE register)))
-
-(def: (local_long instruction)
- (-> /.Local_Long Inst)
- (case instruction
- {/.#LLOAD register} (_.LLOAD register)
- {/.#LSTORE register} (_.LSTORE register)))
-
-(def: (local_float instruction)
- (-> /.Local_Float Inst)
- (case instruction
- {/.#FLOAD register} (_.FLOAD register)
- {/.#FSTORE register} (_.FSTORE register)))
-
-(def: (local_double instruction)
- (-> /.Local_Double Inst)
- (case instruction
- {/.#DLOAD register} (_.DLOAD register)
- {/.#DSTORE register} (_.DSTORE register)))
-
-(def: (local_object instruction)
- (-> /.Local_Object Inst)
- (case instruction
- {/.#ALOAD register} (_.ALOAD register)
- {/.#ASTORE register} (_.ASTORE register)))
-
-(def: (local instruction)
- (-> /.Local Inst)
- (case instruction
- {/.#Local_Int instruction} (..local_int instruction)
- {/.#IINC register} (_.IINC register)
- {/.#Local_Long instruction} (..local_long instruction)
- {/.#Local_Float instruction} (..local_float instruction)
- {/.#Local_Double instruction} (..local_double instruction)
- {/.#Local_Object instruction} (..local_object instruction)))
-
-(def: (stack instruction)
- (-> /.Stack Inst)
- (case instruction
- {/.#DUP} _.DUP
- {/.#DUP_X1} _.DUP_X1
- {/.#DUP_X2} _.DUP_X2
- {/.#DUP2} _.DUP2
- {/.#DUP2_X1} _.DUP2_X1
- {/.#DUP2_X2} _.DUP2_X2
- {/.#SWAP} _.SWAP
- {/.#POP} _.POP
- {/.#POP2} _.POP2))
-
-(def: (comparison instruction)
- (-> /.Comparison Inst)
- (case instruction
- {/.#LCMP} _.LCMP
+... {/.#INSTANCEOF type} (_.INSTANCEOF type)
+... {/.#CHECKCAST type} (_.CHECKCAST type)
+
+... (^template [<tag> <inst>]
+... [{<tag> class method_name method_type}
+... (<inst> class method_name method_type)])
+... ([/.#INVOKEINTERFACE _.INVOKEINTERFACE]
+... [/.#INVOKESPECIAL _.INVOKESPECIAL]
+... [/.#INVOKESTATIC _.INVOKESTATIC]
+... [/.#INVOKEVIRTUAL _.INVOKEVIRTUAL])
+... ))
+
+... (def: (local_int instruction)
+... (-> /.Local_Int Inst)
+... (case instruction
+... {/.#ILOAD register} (_.ILOAD register)
+... {/.#ISTORE register} (_.ISTORE register)))
+
+... (def: (local_long instruction)
+... (-> /.Local_Long Inst)
+... (case instruction
+... {/.#LLOAD register} (_.LLOAD register)
+... {/.#LSTORE register} (_.LSTORE register)))
+
+... (def: (local_float instruction)
+... (-> /.Local_Float Inst)
+... (case instruction
+... {/.#FLOAD register} (_.FLOAD register)
+... {/.#FSTORE register} (_.FSTORE register)))
+
+... (def: (local_double instruction)
+... (-> /.Local_Double Inst)
+... (case instruction
+... {/.#DLOAD register} (_.DLOAD register)
+... {/.#DSTORE register} (_.DSTORE register)))
+
+... (def: (local_object instruction)
+... (-> /.Local_Object Inst)
+... (case instruction
+... {/.#ALOAD register} (_.ALOAD register)
+... {/.#ASTORE register} (_.ASTORE register)))
+
+... (def: (local instruction)
+... (-> /.Local Inst)
+... (case instruction
+... {/.#Local_Int instruction} (..local_int instruction)
+... {/.#IINC register} (_.IINC register)
+... {/.#Local_Long instruction} (..local_long instruction)
+... {/.#Local_Float instruction} (..local_float instruction)
+... {/.#Local_Double instruction} (..local_double instruction)
+... {/.#Local_Object instruction} (..local_object instruction)))
+
+... (def: (stack instruction)
+... (-> /.Stack Inst)
+... (case instruction
+... {/.#DUP} _.DUP
+... {/.#DUP_X1} _.DUP_X1
+... {/.#DUP_X2} _.DUP_X2
+... {/.#DUP2} _.DUP2
+... {/.#DUP2_X1} _.DUP2_X1
+... {/.#DUP2_X2} _.DUP2_X2
+... {/.#SWAP} _.SWAP
+... {/.#POP} _.POP
+... {/.#POP2} _.POP2))
+
+... (def: (comparison instruction)
+... (-> /.Comparison Inst)
+... (case instruction
+... {/.#LCMP} _.LCMP
- {/.#FCMPG} _.FCMPG
- {/.#FCMPL} _.FCMPL
-
- {/.#DCMPG} _.DCMPG
- {/.#DCMPL} _.DCMPL))
-
-(def: (branching instruction)
- (-> (/.Branching org/objectweb/asm/Label) Inst)
- (case instruction
- {/.#IF_ICMPEQ label} (_.IF_ICMPEQ label)
- {/.#IF_ICMPGE label} (_.IF_ICMPGE label)
- {/.#IF_ICMPGT label} (_.IF_ICMPGT label)
- {/.#IF_ICMPLE label} (_.IF_ICMPLE label)
- {/.#IF_ICMPLT label} (_.IF_ICMPLT label)
- {/.#IF_ICMPNE label} (_.IF_ICMPNE label)
- {/.#IFEQ label} (_.IFEQ label)
- {/.#IFGE label} (_.IFGE label)
- {/.#IFGT label} (_.IFGT label)
- {/.#IFLE label} (_.IFLE label)
- {/.#IFLT label} (_.IFLT label)
- {/.#IFNE label} (_.IFNE label)
-
- {/.#TABLESWITCH min max default labels}
- (_.TABLESWITCH min max default labels)
+... {/.#FCMPG} _.FCMPG
+... {/.#FCMPL} _.FCMPL
+
+... {/.#DCMPG} _.DCMPG
+... {/.#DCMPL} _.DCMPL))
+
+... (def: (branching instruction)
+... (-> (/.Branching org/objectweb/asm/Label) Inst)
+... (case instruction
+... {/.#IF_ICMPEQ label} (_.IF_ICMPEQ label)
+... {/.#IF_ICMPGE label} (_.IF_ICMPGE label)
+... {/.#IF_ICMPGT label} (_.IF_ICMPGT label)
+... {/.#IF_ICMPLE label} (_.IF_ICMPLE label)
+... {/.#IF_ICMPLT label} (_.IF_ICMPLT label)
+... {/.#IF_ICMPNE label} (_.IF_ICMPNE label)
+... {/.#IFEQ label} (_.IFEQ label)
+... {/.#IFGE label} (_.IFGE label)
+... {/.#IFGT label} (_.IFGT label)
+... {/.#IFLE label} (_.IFLE label)
+... {/.#IFLT label} (_.IFLT label)
+... {/.#IFNE label} (_.IFNE label)
+
+... {/.#TABLESWITCH min max default labels}
+... (_.TABLESWITCH min max default labels)
- {/.#LOOKUPSWITCH default keys+labels}
- (_.LOOKUPSWITCH default keys+labels)
-
- {/.#IF_ACMPEQ label} (_.IF_ACMPEQ label)
- {/.#IF_ACMPNE label} (_.IF_ACMPNE label)
- {/.#IFNONNULL label} (_.IFNONNULL label)
- {/.#IFNULL label} (_.IFNULL label)))
-
-(def: (exception instruction)
- (-> (/.Exception org/objectweb/asm/Label) Inst)
- (case instruction
- {/.#Try start end handler exception} (_.try start end handler exception)
- {/.#ATHROW} _.ATHROW))
-
-(def: (concurrency instruction)
- (-> /.Concurrency Inst)
- (case instruction
- {/.#MONITORENTER} _.MONITORENTER
- {/.#MONITOREXIT} _.MONITOREXIT))
-
-(def: (return instruction)
- (-> /.Return Inst)
- (case instruction
- {/.#RETURN} _.RETURN
- {/.#IRETURN} _.IRETURN
- {/.#LRETURN} _.LRETURN
- {/.#FRETURN} _.FRETURN
- {/.#DRETURN} _.DRETURN
- {/.#ARETURN} _.ARETURN))
-
-(def: (control instruction)
- (-> (/.Control org/objectweb/asm/Label) Inst)
- (case instruction
- {/.#GOTO label} (_.GOTO label)
- {/.#Branching instruction} (..branching instruction)
- {/.#Exception instruction} (..exception instruction)
- {/.#Concurrency instruction} (..concurrency instruction)
- {/.#Return instruction} (..return instruction)))
-
-(def: (instruction instruction)
- (-> (/.Instruction Inst org/objectweb/asm/Label) Inst)
- (case instruction
- {/.#NOP} _.NOP
- {/.#Constant instruction} (..constant instruction)
- {/.#Arithmetic instruction} (..arithmetic instruction)
- {/.#Bitwise instruction} (..bitwise instruction)
- {/.#Conversion instruction} (..conversion instruction)
- {/.#Array instruction} (..array instruction)
- {/.#Object instruction} (..object instruction)
- {/.#Local instruction} (..local instruction)
- {/.#Stack instruction} (..stack instruction)
- {/.#Comparison instruction} (..comparison instruction)
- {/.#Control instruction} (..control instruction)
- {/.#Embedded embedded} embedded))
-
-(type: Mapping
- (Dictionary /.Label org/objectweb/asm/Label))
-
-(type: (Re_labeler context)
- (-> [Mapping (context /.Label)]
- [Mapping (context org/objectweb/asm/Label)]))
-
-(def: (relabel [mapping label])
- (Re_labeler Identity)
- (case (dictionary.value label mapping)
- {.#Some label}
- [mapping label]
-
- {.#None}
- (let [label' (org/objectweb/asm/Label::new)]
- [(dictionary.has label label' mapping) label'])))
-
-(def: (relabel_branching [mapping instruction])
- (Re_labeler /.Branching)
- (case instruction
- (^template [<tag>]
- [{<tag> label}
- (let [[mapping label] (..relabel [mapping label])]
- [mapping {<tag> label}])])
- ([/.#IF_ICMPEQ] [/.#IF_ICMPGE] [/.#IF_ICMPGT] [/.#IF_ICMPLE] [/.#IF_ICMPLT] [/.#IF_ICMPNE]
- [/.#IFEQ] [/.#IFNE] [/.#IFGE] [/.#IFGT] [/.#IFLE] [/.#IFLT]
-
- [/.#IF_ACMPEQ] [/.#IF_ACMPNE] [/.#IFNONNULL] [/.#IFNULL])
-
- {/.#TABLESWITCH min max default labels}
- (let [[mapping default] (..relabel [mapping default])
- [mapping labels] (list#mix (function (_ input [mapping output])
- (let [[mapping input] (..relabel [mapping input])]
- [mapping (list& input output)]))
- [mapping (list)] labels)]
- [mapping {/.#TABLESWITCH min max default (list.reversed labels)}])
+... {/.#LOOKUPSWITCH default keys+labels}
+... (_.LOOKUPSWITCH default keys+labels)
+
+... {/.#IF_ACMPEQ label} (_.IF_ACMPEQ label)
+... {/.#IF_ACMPNE label} (_.IF_ACMPNE label)
+... {/.#IFNONNULL label} (_.IFNONNULL label)
+... {/.#IFNULL label} (_.IFNULL label)))
+
+... (def: (exception instruction)
+... (-> (/.Exception org/objectweb/asm/Label) Inst)
+... (case instruction
+... {/.#Try start end handler exception} (_.try start end handler exception)
+... {/.#ATHROW} _.ATHROW))
+
+... (def: (concurrency instruction)
+... (-> /.Concurrency Inst)
+... (case instruction
+... {/.#MONITORENTER} _.MONITORENTER
+... {/.#MONITOREXIT} _.MONITOREXIT))
+
+... (def: (return instruction)
+... (-> /.Return Inst)
+... (case instruction
+... {/.#RETURN} _.RETURN
+... {/.#IRETURN} _.IRETURN
+... {/.#LRETURN} _.LRETURN
+... {/.#FRETURN} _.FRETURN
+... {/.#DRETURN} _.DRETURN
+... {/.#ARETURN} _.ARETURN))
+
+... (def: (control instruction)
+... (-> (/.Control org/objectweb/asm/Label) Inst)
+... (case instruction
+... {/.#GOTO label} (_.GOTO label)
+... {/.#Branching instruction} (..branching instruction)
+... {/.#Exception instruction} (..exception instruction)
+... {/.#Concurrency instruction} (..concurrency instruction)
+... {/.#Return instruction} (..return instruction)))
+
+... (def: (instruction instruction)
+... (-> (/.Instruction Inst org/objectweb/asm/Label) Inst)
+... (case instruction
+... {/.#NOP} _.NOP
+... {/.#Constant instruction} (..constant instruction)
+... {/.#Arithmetic instruction} (..arithmetic instruction)
+... {/.#Bitwise instruction} (..bitwise instruction)
+... {/.#Conversion instruction} (..conversion instruction)
+... {/.#Array instruction} (..array instruction)
+... {/.#Object instruction} (..object instruction)
+... {/.#Local instruction} (..local instruction)
+... {/.#Stack instruction} (..stack instruction)
+... {/.#Comparison instruction} (..comparison instruction)
+... {/.#Control instruction} (..control instruction)
+... {/.#Embedded embedded} embedded))
+
+... (type: Mapping
+... (Dictionary /.Label org/objectweb/asm/Label))
+
+... (type: (Re_labeler context)
+... (-> [Mapping (context /.Label)]
+... [Mapping (context org/objectweb/asm/Label)]))
+
+... (def: (relabel [mapping label])
+... (Re_labeler Identity)
+... (case (dictionary.value label mapping)
+... {.#Some label}
+... [mapping label]
+
+... {.#None}
+... (let [label' (org/objectweb/asm/Label::new)]
+... [(dictionary.has label label' mapping) label'])))
+
+... (def: (relabel_branching [mapping instruction])
+... (Re_labeler /.Branching)
+... (case instruction
+... (^template [<tag>]
+... [{<tag> label}
+... (let [[mapping label] (..relabel [mapping label])]
+... [mapping {<tag> label}])])
+... ([/.#IF_ICMPEQ] [/.#IF_ICMPGE] [/.#IF_ICMPGT] [/.#IF_ICMPLE] [/.#IF_ICMPLT] [/.#IF_ICMPNE]
+... [/.#IFEQ] [/.#IFNE] [/.#IFGE] [/.#IFGT] [/.#IFLE] [/.#IFLT]
+
+... [/.#IF_ACMPEQ] [/.#IF_ACMPNE] [/.#IFNONNULL] [/.#IFNULL])
+
+... {/.#TABLESWITCH min max default labels}
+... (let [[mapping default] (..relabel [mapping default])
+... [mapping labels] (list#mix (function (_ input [mapping output])
+... (let [[mapping input] (..relabel [mapping input])]
+... [mapping (list& input output)]))
+... [mapping (list)] labels)]
+... [mapping {/.#TABLESWITCH min max default (list.reversed labels)}])
- {/.#LOOKUPSWITCH default keys+labels}
- (let [[mapping default] (..relabel [mapping default])
- [mapping keys+labels] (list#mix (function (_ [expected input] [mapping output])
- (let [[mapping input] (..relabel [mapping input])]
- [mapping (list& [expected input] output)]))
- [mapping (list)] keys+labels)]
- [mapping {/.#LOOKUPSWITCH default (list.reversed keys+labels)}])
- ))
-
-(def: (relabel_exception [mapping instruction])
- (Re_labeler /.Exception)
- (case instruction
- {/.#Try start end handler exception}
- (let [[mapping start] (..relabel [mapping start])
- [mapping end] (..relabel [mapping end])
- [mapping handler] (..relabel [mapping handler])]
- [mapping {/.#Try start end handler exception}])
+... {/.#LOOKUPSWITCH default keys+labels}
+... (let [[mapping default] (..relabel [mapping default])
+... [mapping keys+labels] (list#mix (function (_ [expected input] [mapping output])
+... (let [[mapping input] (..relabel [mapping input])]
+... [mapping (list& [expected input] output)]))
+... [mapping (list)] keys+labels)]
+... [mapping {/.#LOOKUPSWITCH default (list.reversed keys+labels)}])
+... ))
+
+... (def: (relabel_exception [mapping instruction])
+... (Re_labeler /.Exception)
+... (case instruction
+... {/.#Try start end handler exception}
+... (let [[mapping start] (..relabel [mapping start])
+... [mapping end] (..relabel [mapping end])
+... [mapping handler] (..relabel [mapping handler])]
+... [mapping {/.#Try start end handler exception}])
- {/.#ATHROW}
- [mapping {/.#ATHROW}]
- ))
-
-(def: (relabel_control [mapping instruction])
- (Re_labeler /.Control)
- (case instruction
- (^template [<tag> <relabel>]
- [{<tag> instruction}
- (let [[mapping instruction] (<relabel> [mapping instruction])]
- [mapping {<tag> instruction}])])
- ([/.#GOTO ..relabel]
- [/.#Branching ..relabel_branching]
- [/.#Exception ..relabel_exception])
-
- (^template [<tag>]
- [{<tag> instruction}
- [mapping {<tag> instruction}]])
- ([/.#Concurrency] [/.#Return])
- ))
-
-(def: (relabel_instruction [mapping instruction])
- (Re_labeler (/.Instruction Inst))
- (case instruction
- {/.#Embedded embedded}
- [mapping {/.#Embedded embedded}]
-
- {/.#NOP}
- [mapping {/.#NOP}]
-
- (^template [<tag>]
- [{<tag> instruction}
- [mapping {<tag> instruction}]])
- ([/.#Constant]
- [/.#Arithmetic]
- [/.#Bitwise]
- [/.#Conversion]
- [/.#Array]
- [/.#Object]
- [/.#Local]
- [/.#Stack]
- [/.#Comparison])
+... {/.#ATHROW}
+... [mapping {/.#ATHROW}]
+... ))
+
+... (def: (relabel_control [mapping instruction])
+... (Re_labeler /.Control)
+... (case instruction
+... (^template [<tag> <relabel>]
+... [{<tag> instruction}
+... (let [[mapping instruction] (<relabel> [mapping instruction])]
+... [mapping {<tag> instruction}])])
+... ([/.#GOTO ..relabel]
+... [/.#Branching ..relabel_branching]
+... [/.#Exception ..relabel_exception])
+
+... (^template [<tag>]
+... [{<tag> instruction}
+... [mapping {<tag> instruction}]])
+... ([/.#Concurrency] [/.#Return])
+... ))
+
+... (def: (relabel_instruction [mapping instruction])
+... (Re_labeler (/.Instruction Inst))
+... (case instruction
+... {/.#Embedded embedded}
+... [mapping {/.#Embedded embedded}]
+
+... {/.#NOP}
+... [mapping {/.#NOP}]
+
+... (^template [<tag>]
+... [{<tag> instruction}
+... [mapping {<tag> instruction}]])
+... ([/.#Constant]
+... [/.#Arithmetic]
+... [/.#Bitwise]
+... [/.#Conversion]
+... [/.#Array]
+... [/.#Object]
+... [/.#Local]
+... [/.#Stack]
+... [/.#Comparison])
- {/.#Control instruction}
- (let [[mapping instruction] (..relabel_control [mapping instruction])]
- [mapping {/.#Control instruction}])))
-
-(def: (relabel_bytecode [mapping bytecode])
- (Re_labeler (/.Bytecode Inst))
- (sequence#mix (function (_ input [mapping output])
- (let [[mapping input'] (..relabel_instruction [mapping input])]
- [mapping (sequence.suffix input' output)]))
- [mapping (sequence.sequence)]
- bytecode))
-
-(def: fresh
- Mapping
- (dictionary.empty nat.hash))
-
-(def: bytecode
- (-> (/.Bytecode Inst /.Label) jvm.Inst)
- (|>> [..fresh]
- ..relabel_bytecode
- product.right
- (sequence#each ..instruction)
- sequence.list
- _.fuse))
-
-(with_expansions [<anchor> (as_is jvm.Anchor)
- <expression> (as_is Inst)
- <directive> (as_is jvm.Definition)
- <type_vars> (as_is <anchor> <expression> <directive>)]
- (type: Handler'
- ... (generation.Handler jvm.Anchor (/.Bytecode Inst /.Label) jvm.Definition)
- (-> extension.Name
- (phase.Phase [(extension.Bundle <type_vars>)
- (generation.State <type_vars>)]
- Synthesis
- <expression>)
- (phase.Phase [(extension.Bundle <type_vars>)
- (generation.State <type_vars>)]
- (List Synthesis)
- (/.Bytecode Inst /.Label)))))
-
-(def: (true_handler extender pseudo)
- (-> jvm.Extender Any jvm.Handler)
- (function (_ extension_name phase archive inputs)
- (# phase.monad each
- (|>> (:as (/.Bytecode Inst /.Label)) ..bytecode)
- ((extender pseudo) extension_name phase archive inputs))))
-
-(type: Phase (directive.Phase jvm.Anchor jvm.Inst jvm.Definition))
-(type: Operation (directive.Operation jvm.Anchor jvm.Inst jvm.Definition))
-(type: Handler (directive.Handler jvm.Anchor jvm.Inst jvm.Definition))
-
-(def: (def::generation extender)
- (-> jvm.Extender ..Handler)
- (function (handler extension_name phase archive inputsC+)
- (case inputsC+
- (^ (list nameC valueC))
- (do phase.monad
- [[_ _ name] (lux/.evaluate! archive Text nameC)
- [_ handlerV] (lux/.generator archive (:as Text name) ..Handler' valueC)
- _ (|> handlerV
- (..true_handler extender)
- (extension.install extender (:as Text name))
- directive.lifted_generation)
- _ (directive.lifted_generation
- (generation.log! (format "Generation " (%.text (:as Text name)))))]
- (in directive.no_requirements))
-
- _
- (phase.except extension.invalid_syntax [extension_name %.code inputsC+]))))
+... {/.#Control instruction}
+... (let [[mapping instruction] (..relabel_control [mapping instruction])]
+... [mapping {/.#Control instruction}])))
+
+... (def: (relabel_bytecode [mapping bytecode])
+... (Re_labeler (/.Bytecode Inst))
+... (sequence#mix (function (_ input [mapping output])
+... (let [[mapping input'] (..relabel_instruction [mapping input])]
+... [mapping (sequence.suffix input' output)]))
+... [mapping (sequence.sequence)]
+... bytecode))
+
+... (def: fresh
+... Mapping
+... (dictionary.empty nat.hash))
+
+... (def: bytecode
+... (-> (/.Bytecode Inst /.Label) jvm.Inst)
+... (|>> [..fresh]
+... ..relabel_bytecode
+... product.right
+... (sequence#each ..instruction)
+... sequence.list
+... _.fuse))
+
+... (with_expansions [<anchor> (as_is jvm.Anchor)
+... <expression> (as_is Inst)
+... <directive> (as_is jvm.Definition)
+... <type_vars> (as_is <anchor> <expression> <directive>)]
+... (type: Handler'
+... ... (generation.Handler jvm.Anchor (/.Bytecode Inst /.Label) jvm.Definition)
+... (-> extension.Name
+... (phase.Phase [(extension.Bundle <type_vars>)
+... (generation.State <type_vars>)]
+... Synthesis
+... <expression>)
+... (phase.Phase [(extension.Bundle <type_vars>)
+... (generation.State <type_vars>)]
+... (List Synthesis)
+... (/.Bytecode Inst /.Label)))))
+
+... (def: (true_handler extender pseudo)
+... (-> jvm.Extender Any jvm.Handler)
+... (function (_ extension_name phase archive inputs)
+... (# phase.monad each
+... (|>> (:as (/.Bytecode Inst /.Label)) ..bytecode)
+... ((extender pseudo) extension_name phase archive inputs))))
+
+... (type: Phase (directive.Phase jvm.Anchor jvm.Inst jvm.Definition))
+... (type: Operation (directive.Operation jvm.Anchor jvm.Inst jvm.Definition))
+... (type: Handler (directive.Handler jvm.Anchor jvm.Inst jvm.Definition))
+
+... (def: (def::generation extender)
+... (-> jvm.Extender ..Handler)
+... (function (handler extension_name phase archive inputsC+)
+... (case inputsC+
+... (^ (list nameC valueC))
+... (do phase.monad
+... [[_ _ name] (lux/.evaluate! archive Text nameC)
+... [_ handlerV] (lux/.generator archive (:as Text name) ..Handler' valueC)
+... _ (|> handlerV
+... (..true_handler extender)
+... (extension.install extender (:as Text name))
+... directive.lifted_generation)
+... _ (directive.lifted_generation
+... (generation.log! (format "Generation " (%.text (:as Text name)))))]
+... (in directive.no_requirements))
+
+... _
+... (phase.except extension.invalid_syntax [extension_name %.code inputsC+]))))
(def: .public (custom [parser handler])
(All (_ i)
@@ -729,7 +729,7 @@
(def: (method_dependencies archive method)
(-> Archive (Method Synthesis)
(generation.Operation jvm.Anchor jvm.Inst jvm.Definition
- (Set artifact.Dependency)))
+ (Set unit.ID)))
(case method
{#Constructor [privacy strict_floating_point? annotations variables exceptions
self arguments constructor_arguments
@@ -753,7 +753,7 @@
(cache.dependencies archive body)
{#Abstract _}
- (# phase.monad in artifact.no_dependencies)))
+ (# phase.monad in unit.none)))
(def: constructor
(Parser (Constructor Code))
@@ -1201,7 +1201,7 @@
(# ! each (|>> [typeJ])
(synthesise archive termA)))
constructor_argumentsA)
- bodyS (synthesise archive {analysis.#Function (list) (//A.hide_method_body (list.size arguments) bodyA)})]
+ bodyS (synthesise archive {analysis.#Function (list) (//A.hidden_method_body (list.size arguments) bodyA)})]
(in [privacy strict_floating_point? annotations method_tvars exceptions
self arguments constructor_argumentsS
(case bodyS
@@ -1220,7 +1220,7 @@
synthesise directive.synthesis]
(directive.lifted_synthesis
(do !
- [bodyS (synthesise archive {analysis.#Function (list) (//A.hide_method_body (list.size arguments) bodyA)})]
+ [bodyS (synthesise archive {analysis.#Function (list) (//A.hidden_method_body (list.size arguments) bodyA)})]
(in [[super_name super_tvars] method_name strict_floating_point? annotations
method_tvars self arguments returnJ exceptionsJ
(case bodyS
@@ -1239,7 +1239,7 @@
synthesise directive.synthesis]
(directive.lifted_synthesis
(do !
- [bodyS (synthesise archive {analysis.#Function (list) (//A.hide_method_body (list.size arguments) bodyA)})]
+ [bodyS (synthesise archive {analysis.#Function (list) (//A.hidden_method_body (list.size arguments) bodyA)})]
(in [name privacy final? strict_floating_point? annotations method_tvars
self arguments returnJ exceptionsJ
(case bodyS
@@ -1258,7 +1258,7 @@
synthesise directive.synthesis]
(directive.lifted_synthesis
(do !
- [bodyS (synthesise archive {analysis.#Function (list) (//A.hide_method_body (list.size arguments) bodyA)})]
+ [bodyS (synthesise archive {analysis.#Function (list) (//A.hidden_method_body (list.size arguments) bodyA)})]
(in [name privacy strict_floating_point? annotations method_tvars
arguments returnJ exceptionsJ
(case bodyS
@@ -1507,7 +1507,7 @@
def.fuse))]]]
(directive.lifted_generation
(do !
- [artifact_id (generation.learn_custom class_name artifact.no_dependencies)
+ [artifact_id (generation.learn_custom class_name unit.none)
_ (generation.execute! directive)
_ (generation.save! artifact_id {.#Some class_name} directive)
_ (generation.log! (format "JVM Interface " (%.text class_name)))]
@@ -1516,6 +1516,6 @@
(def: .public (bundle class_loader extender)
(-> java/lang/ClassLoader jvm.Extender (directive.Bundle jvm.Anchor jvm.Inst jvm.Definition))
(|> bundle.empty
- (dictionary.has "lux def generation" (..def::generation extender))
+ ... (dictionary.has "lux def generation" (..def::generation extender))
(dictionary.has "jvm class" (..jvm::class class_loader))
(dictionary.has "jvm class interface" ..jvm::class::interface)))
diff --git a/lux-jvm/source/luxc/lang/translation/jvm.lux b/lux-jvm/source/luxc/lang/translation/jvm.lux
index c2f7cea68..e2bd46f5d 100644
--- a/lux-jvm/source/luxc/lang/translation/jvm.lux
+++ b/lux-jvm/source/luxc/lang/translation/jvm.lux
@@ -1,44 +1,45 @@
(.using
- [library
- [lux {"-" Definition}
- ["[0]" ffi {"+" import: do_to object}]
- [abstract
- [monad {"+" do}]]
- [control
- pipe
- ["[0]" maybe]
- ["[0]" try {"+" Try}]
- ["[0]" exception {"+" exception:}]
- ["[0]" io {"+" IO io}]
- [concurrency
- ["[0]" atom {"+" Atom atom}]]]
- [data
- [binary {"+" Binary}]
- ["[0]" product]
- ["[0]" text ("[1]@[0]" hash)
- ["%" format {"+" format}]]
- [collection
- ["[0]" array]
- ["[0]" dictionary {"+" Dictionary}]]]
- [target
- [jvm
- ["[0]" loader {"+" Library}]
- ["[0]" type
- ["[0]" descriptor]]]]
- [tool
- [compiler
- [language
- [lux
- ["[0]" version]
- ["[0]" generation]]]
- [meta
- [io {"+" lux_context}]]]]]]
- [///
- [host
- ["[0]" jvm {"+" Inst Definition Host State}
- ["[0]" def]
- ["[0]" inst]]]]
- )
+ [library
+ [lux {"-" Definition}
+ ["[0]" ffi {"+" import: do_to object}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ pipe
+ ["[0]" maybe]
+ ["[0]" try {"+" Try}]
+ ["[0]" exception {"+" exception:}]
+ ["[0]" io {"+" IO io}]
+ [concurrency
+ ["[0]" atom {"+" Atom atom}]]]
+ [data
+ [binary {"+" Binary}]
+ ["[0]" product]
+ ["[0]" text ("[1]@[0]" hash)
+ ["%" format {"+" format}]]
+ [collection
+ ["[0]" array]
+ ["[0]" dictionary {"+" Dictionary}]]]
+ [target
+ [jvm
+ ["[0]" loader {"+" Library}]
+ ["[0]" type
+ ["[0]" descriptor]]]]
+ [tool
+ [compiler
+ [language
+ [lux
+ ["[0]" version]]]
+ [meta
+ [io {"+" lux_context}]
+ [archive
+ ["[0]" unit]]]]]]]
+ [///
+ [host
+ ["[0]" jvm {"+" Inst Definition Host State}
+ ["[0]" def]
+ ["[0]" inst]]]]
+ )
(import: java/lang/reflect/Field
["[1]::[0]"
@@ -103,7 +104,7 @@
(text.replaced ..class_path_separator .module_separator))
(def: .public (class_name [module_id artifact_id])
- (-> generation.Context Text)
+ (-> unit.ID Text)
(format lux_context
..class_path_separator (%.nat version.version)
..class_path_separator (%.nat module_id)
@@ -146,7 +147,7 @@
(loader.load class_name loader))))
(def: (define! library loader context custom valueI)
- (-> Library java/lang/ClassLoader generation.Context (Maybe Text) Inst (Try [Text Any Definition]))
+ (-> Library java/lang/ClassLoader unit.ID (Maybe Text) Inst (Try [Text Any Definition]))
(do try.monad
[[value definition] (evaluate! library loader (..class_name context) valueI)]
(in [(maybe.else (..class_name context)
diff --git a/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux b/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux
index 28a5c34bc..ee6f243f2 100644
--- a/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux
+++ b/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux
@@ -40,7 +40,7 @@
["[0]" variable {"+" Variable Register}]]
[meta
[archive {"+" Archive}
- ["[0]" artifact]]
+ ["[0]" unit]]
["[0]" cache "_"
["[1]" artifact]]]
[language
@@ -1127,7 +1127,7 @@
(unwrap_primitive _.DRETURN type.double)))))))
(def: (method_dependencies archive method)
- (-> Archive (/.Overriden_Method Synthesis) (Operation (Set artifact.Dependency)))
+ (-> Archive (/.Overriden_Method Synthesis) (Operation (Set unit.ID)))
(let [[_super _name _strict_fp? _annotations
_t_vars _this _arguments _return _exceptions
bodyS] method]
diff --git a/lux-jvm/source/luxc/lang/translation/jvm/function.lux b/lux-jvm/source/luxc/lang/translation/jvm/function.lux
index 2eb1894da..6c0e29730 100644
--- a/lux-jvm/source/luxc/lang/translation/jvm/function.lux
+++ b/lux-jvm/source/luxc/lang/translation/jvm/function.lux
@@ -31,9 +31,10 @@
[lux
[analysis {"+" Environment}]
[synthesis {"+" Synthesis Abstraction Apply}]
- ["[0]" generation {"+" Context}]]]
+ ["[0]" generation]]]
[meta
- [archive {"+" Archive}]
+ [archive {"+" Archive}
+ ["[0]" unit]]
["[0]" cache "_"
["[1]" artifact]]]]]]]
[luxc
@@ -306,7 +307,7 @@
(in [functionD instanceI]))))
(def: .public (function' forced_context generate archive [env arity bodyS])
- (-> (Maybe Context) (Generator Abstraction))
+ (-> (Maybe unit.ID) (Generator Abstraction))
(do [! phase.monad]
[@begin _.make_label
dependencies (cache.dependencies archive bodyS)
diff --git a/lux-jvm/source/luxc/lang/translation/jvm/program.lux b/lux-jvm/source/luxc/lang/translation/jvm/program.lux
index 7e408ecc4..4efe0fd3d 100644
--- a/lux-jvm/source/luxc/lang/translation/jvm/program.lux
+++ b/lux-jvm/source/luxc/lang/translation/jvm/program.lux
@@ -1,32 +1,34 @@
(.using
- [library
- [lux "*"
- [data
- [text
- ["%" format {"+" format}]]]
- [target
- [jvm
- ["$t" type]]]
- [tool
- [compiler
- [language
- [lux
- [generation {"+" Context}]
- [program {"+" Program}]]]]]]]
- [luxc
- [lang
- [host
- ["_" jvm
- ["$d" def]
- ["$i" inst]]]
- [translation
- ["[0]" jvm
- ["[0]" runtime]]]]])
+ [library
+ [lux "*"
+ [data
+ [text
+ ["%" format {"+" format}]]]
+ [target
+ [jvm
+ ["$t" type]]]
+ [tool
+ [compiler
+ [language
+ [lux
+ [program {"+" Program}]]]
+ [meta
+ [archive
+ ["[0]" unit]]]]]]]
+ [luxc
+ [lang
+ [host
+ ["_" jvm
+ ["$d" def]
+ ["$i" inst]]]
+ [translation
+ ["[0]" jvm
+ ["[0]" runtime]]]]])
(def: ^Object ($t.class "java.lang.Object" (list)))
(def: .public (program artifact_name context programI)
- (-> (-> Context Text) (Program _.Inst _.Definition))
+ (-> (-> unit.ID Text) (Program _.Inst _.Definition))
(let [nilI runtime.noneI
num_inputsI (|>> ($i.ALOAD 0) $i.ARRAYLENGTH)
--I (|>> ($i.int +1) $i.ISUB)
diff --git a/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux b/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux
index cec04d529..ee3e16ed8 100644
--- a/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux
+++ b/lux-jvm/source/luxc/lang/translation/jvm/runtime.lux
@@ -1,45 +1,46 @@
(.using
- [library
- [lux {"-" Type Label Primitive try}
- [abstract
- [monad {"+" do}]
- ["[0]" enum]]
- [data
- [binary {"+" Binary}]
- ["[0]" product]
- [text
- ["%" format {"+" format}]]
- [collection
- ["[0]" list ("[1]@[0]" functor)]
- ["[0]" sequence]
- ["[0]" set]]]
- ["[0]" math
- [number
- ["n" nat]]]
- [target
- [jvm
- ["[0]" type {"+" Type}
- ["[0]" category {"+" Void Value' Value Return' Return Primitive Object Class Array Var Parameter Method}]
- ["[0]" reflection]]]]
- [tool
- [compiler
- [arity {"+" Arity}]
- ["[0]" phase]
- [language
- [lux
- ["[0]" synthesis]
- ["[0]" generation]]]
- [meta
- [archive {"+" Output}
- ["[0]" artifact]
- ["[0]" registry {"+" Registry}]]]]]]]
- [luxc
- [lang
- [host
- ["$" jvm {"+" Label Inst Def Operation}
- ["$d" def]
- ["_" inst]]]]]
- ["[0]" // {"+" ByteCode}])
+ [library
+ [lux {"-" Type Label Primitive try}
+ [abstract
+ [monad {"+" do}]
+ ["[0]" enum]]
+ [data
+ [binary {"+" Binary}]
+ ["[0]" product]
+ [text
+ ["%" format {"+" format}]]
+ [collection
+ ["[0]" list ("[1]@[0]" functor)]
+ ["[0]" sequence]
+ ["[0]" set]]]
+ ["[0]" math
+ [number
+ ["n" nat]]]
+ [target
+ [jvm
+ ["[0]" type {"+" Type}
+ ["[0]" category {"+" Void Value' Value Return' Return Primitive Object Class Array Var Parameter Method}]
+ ["[0]" reflection]]]]
+ [tool
+ [compiler
+ [arity {"+" Arity}]
+ ["[0]" phase]
+ [language
+ [lux
+ ["[0]" synthesis]
+ ["[0]" generation]]]
+ [meta
+ [archive {"+" Output}
+ ["[0]" artifact]
+ ["[0]" registry {"+" Registry}]
+ ["[0]" unit]]]]]]]
+ [luxc
+ [lang
+ [host
+ ["$" jvm {"+" Label Inst Def Operation}
+ ["$d" def]
+ ["_" inst]]]]]
+ ["[0]" // {"+" ByteCode}])
(def: $Text (type.class "java.lang.String" (list)))
(def: .public $Lefts type.int)
@@ -414,9 +415,9 @@
... function_payload ..translate_function
]
(in [(|> registry.empty
- (registry.resource true artifact.no_dependencies)
+ (registry.resource true unit.none)
product.right
- ... (registry.resource true artifact.no_dependencies)
+ ... (registry.resource true unit.none)
... product.right
)
(sequence.sequence runtime_payload