diff options
Diffstat (limited to 'stdlib/source/library/lux/target/jvm/bytecode/instruction.lux')
-rw-r--r-- | stdlib/source/library/lux/target/jvm/bytecode/instruction.lux | 104 |
1 files changed, 52 insertions, 52 deletions
diff --git a/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux b/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux index 5aee5816a..7d76f4c78 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux @@ -75,7 +75,7 @@ [(n.+ (///unsigned.value ..opcode_size) offset) (try.assumed - (binary.write/8 offset opcode binary))])) + (binary.write/8! offset opcode binary))])) (def: nullary [Estimator (-> Opcode Instruction)] @@ -105,7 +105,7 @@ [(n.+ (///unsigned.value <shift>) offset) (try.assumed (do try.monad - [_ (binary.write/8 offset opcode binary)] + [_ (binary.write/8! offset opcode binary)] (<writer> (n.+ (///unsigned.value ..opcode_size) offset) (<unwrap> input0) binary)))])) @@ -117,10 +117,10 @@ [(n.+ (///unsigned.value <shift>) size) (|>> mutation ((<private> opcode input0)))])]))] - [..size/1 unary/1 U1 binary.write/8 ///unsigned.value] - [..size/2 unary/2 U2 binary.write/16 ///unsigned.value] - [..size/2 jump/2 Jump binary.write/16 ///signed.value] - [..size/4 jump/4 Big_Jump binary.write/32 ///signed.value] + [..size/1 unary/1 U1 binary.write/8! ///unsigned.value] + [..size/2 unary/2 U2 binary.write/16! ///unsigned.value] + [..size/2 jump/2 Jump binary.write/16! ///signed.value] + [..size/4 jump/4 Big_Jump binary.write/32! ///signed.value] ) (template [<shift> <name> <inputT> <writer>] @@ -131,7 +131,7 @@ [(n.+ (///unsigned.value <shift>) offset) (try.assumed (do try.monad - [_ (binary.write/8 offset opcode binary)] + [_ (binary.write/8! offset opcode binary)] (<writer> (n.+ (///unsigned.value ..opcode_size) offset) (///signed.value input0) binary)))])) @@ -143,8 +143,8 @@ [(n.+ (///unsigned.value <shift>) size) (|>> mutation ((<private> opcode input0)))])]))] - [..size/1 unary/1' S1 binary.write/8] - [..size/2 unary/2' S2 binary.write/16] + [..size/1 unary/1' S1 binary.write/8!] + [..size/2 unary/2' S2 binary.write/16!] ) (def: size/11 @@ -159,13 +159,13 @@ [(n.+ (///unsigned.value ..size/11) offset) (try.assumed (do try.monad - [_ (binary.write/8 offset opcode binary) - _ (binary.write/8 (n.+ (///unsigned.value ..opcode_size) offset) - (///unsigned.value input0) - binary)] - (binary.write/8 (n.+ (///unsigned.value ..size/1) offset) - (///unsigned.value input1) - binary)))])) + [_ (binary.write/8! offset opcode binary) + _ (binary.write/8! (n.+ (///unsigned.value ..opcode_size) offset) + (///unsigned.value input0) + binary)] + (binary.write/8! (n.+ (///unsigned.value ..size/1) offset) + (///unsigned.value input1) + binary)))])) (def: binary/11 [Estimator (-> Opcode U1 U1 Instruction)] @@ -186,13 +186,13 @@ [(n.+ (///unsigned.value ..size/21) offset) (try.assumed (do try.monad - [_ (binary.write/8 offset opcode binary) - _ (binary.write/16 (n.+ (///unsigned.value ..opcode_size) offset) - (///unsigned.value input0) - binary)] - (binary.write/8 (n.+ (///unsigned.value ..size/2) offset) - (///unsigned.value input1) - binary)))])) + [_ (binary.write/8! offset opcode binary) + _ (binary.write/16! (n.+ (///unsigned.value ..opcode_size) offset) + (///unsigned.value input0) + binary)] + (binary.write/8! (n.+ (///unsigned.value ..size/2) offset) + (///unsigned.value input1) + binary)))])) (def: binary/21 [Estimator (-> Opcode U2 U1 Instruction)] @@ -214,16 +214,16 @@ [(n.+ (///unsigned.value ..size/211) offset) (try.assumed (do try.monad - [_ (binary.write/8 offset opcode binary) - _ (binary.write/16 (n.+ (///unsigned.value ..opcode_size) offset) - (///unsigned.value input0) - binary) - _ (binary.write/8 (n.+ (///unsigned.value ..size/2) offset) - (///unsigned.value input1) - binary)] - (binary.write/8 (n.+ (///unsigned.value ..size/21) offset) - (///unsigned.value input2) - binary)))])) + [_ (binary.write/8! offset opcode binary) + _ (binary.write/16! (n.+ (///unsigned.value ..opcode_size) offset) + (///unsigned.value input0) + binary) + _ (binary.write/8! (n.+ (///unsigned.value ..size/2) offset) + (///unsigned.value input1) + binary)] + (binary.write/8! (n.+ (///unsigned.value ..size/21) offset) + (///unsigned.value input2) + binary)))])) (def: trinary/211 [Estimator (-> Opcode U2 U1 U1 Instruction)] @@ -254,7 +254,7 @@ [11 t_long] )) -## https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5 +... https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5 (with_expansions [<constants> (template [<code> <name>] [[<code> <name> [] []]] @@ -617,21 +617,21 @@ (do {! try.monad} [amount_of_afterwards (|> amount_of_afterwards .int ///signed.s4) maximum (///signed.+/4 minimum amount_of_afterwards) - _ (binary.write/8 offset (hex "AA") binary) + _ (binary.write/8! offset (hex "AA") binary) .let [offset (n.+ (///unsigned.value ..opcode_size) offset)] _ (case padding 3 (do ! - [_ (binary.write/8 offset 0 binary)] - (binary.write/16 (inc offset) 0 binary)) - 2 (binary.write/16 offset 0 binary) - 1 (binary.write/8 offset 0 binary) + [_ (binary.write/8! offset 0 binary)] + (binary.write/16! (inc offset) 0 binary)) + 2 (binary.write/16! offset 0 binary) + 1 (binary.write/8! offset 0 binary) _ (in binary)) .let [offset (n.+ padding offset)] - _ (binary.write/32 offset (///signed.value default) binary) + _ (binary.write/32! offset (///signed.value default) binary) .let [offset (n.+ (///unsigned.value ..big_jump_size) offset)] - _ (binary.write/32 offset (///signed.value minimum) binary) + _ (binary.write/32! offset (///signed.value minimum) binary) .let [offset (n.+ (///unsigned.value ..integer_size) offset)] - _ (binary.write/32 offset (///signed.value maximum) binary)] + _ (binary.write/32! offset (///signed.value maximum) binary)] (loop [offset (n.+ (///unsigned.value ..integer_size) offset) afterwards (: (List Big_Jump) (#.Item at_minimum afterwards))] @@ -641,7 +641,7 @@ (#.Item head tail) (do ! - [_ (binary.write/32 offset (///signed.value head) binary)] + [_ (binary.write/32! offset (///signed.value head) binary)] (recur (n.+ (///unsigned.value ..big_jump_size) offset) tail))))))]))] [(n.+ tableswitch_size @@ -679,19 +679,19 @@ [(n.+ lookupswitch_size offset) (try.assumed (do {! try.monad} - [_ (binary.write/8 offset (hex "AB") binary) + [_ (binary.write/8! offset (hex "AB") binary) .let [offset (n.+ (///unsigned.value ..opcode_size) offset)] _ (case padding 3 (do ! - [_ (binary.write/8 offset 0 binary)] - (binary.write/16 (inc offset) 0 binary)) - 2 (binary.write/16 offset 0 binary) - 1 (binary.write/8 offset 0 binary) + [_ (binary.write/8! offset 0 binary)] + (binary.write/16! (inc offset) 0 binary)) + 2 (binary.write/16! offset 0 binary) + 1 (binary.write/8! offset 0 binary) _ (in binary)) .let [offset (n.+ padding offset)] - _ (binary.write/32 offset (///signed.value default) binary) + _ (binary.write/32! offset (///signed.value default) binary) .let [offset (n.+ (///unsigned.value ..big_jump_size) offset)] - _ (binary.write/32 offset amount_of_cases binary)] + _ (binary.write/32! offset amount_of_cases binary)] (loop [offset (n.+ (///unsigned.value ..integer_size) offset) cases cases] (case cases @@ -700,8 +700,8 @@ (#.Item [value jump] tail) (do ! - [_ (binary.write/32 offset (///signed.value value) binary) - _ (binary.write/32 (n.+ (///unsigned.value ..integer_size) offset) (///signed.value jump) binary)] + [_ (binary.write/32! offset (///signed.value value) binary) + _ (binary.write/32! (n.+ (///unsigned.value ..integer_size) offset) (///signed.value jump) binary)] (recur (n.+ case_size offset) tail))))))]))] [(n.+ lookupswitch_size |