From 29d99720a45bc953ae3c5c77d5a10366353cdd05 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Thu, 20 Jun 2019 22:54:40 -0400 Subject: Unified the unsigned integers. --- stdlib/source/lux/target/jvm/attribute.lux | 8 +-- stdlib/source/lux/target/jvm/attribute/code.lux | 4 +- .../source/lux/target/jvm/attribute/code/label.lux | 2 +- stdlib/source/lux/target/jvm/class.lux | 6 +- stdlib/source/lux/target/jvm/constant/pool.lux | 6 +- stdlib/source/lux/target/jvm/constant/tag.lux | 4 +- stdlib/source/lux/target/jvm/encoding.lux | 65 ++++++++++++---------- stdlib/source/lux/target/jvm/index.lux | 2 +- stdlib/source/lux/target/jvm/magic.lux | 2 +- stdlib/source/lux/target/jvm/modifier.lux | 6 +- stdlib/source/lux/target/jvm/version.lux | 2 +- 11 files changed, 57 insertions(+), 50 deletions(-) (limited to 'stdlib/source') diff --git a/stdlib/source/lux/target/jvm/attribute.lux b/stdlib/source/lux/target/jvm/attribute.lux index 946f58477..e2db85282 100644 --- a/stdlib/source/lux/target/jvm/attribute.lux +++ b/stdlib/source/lux/target/jvm/attribute.lux @@ -34,7 +34,7 @@ (Equivalence (Info about)))) ($_ equivalence.product //index.equivalence - //encoding.u4-equivalence + //encoding.equivalence Equivalence)) (def: (info-writer writer) @@ -78,7 +78,7 @@ (case attribute (^template [] ( [name length info]) - (|> length //encoding.from-u4 .nat (n/+ fixed-attribute-length))) + (|> length //encoding.nat .nat (n/+ fixed-attribute-length))) ([#Constant] [#Code]))) (def: constant-name "ConstantValue") @@ -86,7 +86,7 @@ (def: (constant' @name index) (-> (Index UTF8) Constant Attribute) (#Constant {#name @name - #length (//encoding.to-u4 /constant.length) + #length (//encoding.u4 /constant.length) #info index})) (def: #export (constant index) @@ -101,7 +101,7 @@ (-> (Index UTF8) Code Attribute) (#Code {#name @name ## https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3 - #length (//encoding.to-u4 + #length (//encoding.u4 (/code.length ..length specification)) #info specification})) diff --git a/stdlib/source/lux/target/jvm/attribute/code.lux b/stdlib/source/lux/target/jvm/attribute/code.lux index 4cc47b5af..d30bfa806 100644 --- a/stdlib/source/lux/target/jvm/attribute/code.lux +++ b/stdlib/source/lux/target/jvm/attribute/code.lux @@ -54,8 +54,8 @@ (All [attribute] (-> (Equivalence attribute) (Equivalence (Code attribute)))) ($_ equivalence.product - ///encoding.u2-equivalence - ///encoding.u2-equivalence + ///encoding.equivalence + ///encoding.equivalence binary.equivalence (row.equivalence /exception.equivalence) (row.equivalence attribute-equivalence) diff --git a/stdlib/source/lux/target/jvm/attribute/code/label.lux b/stdlib/source/lux/target/jvm/attribute/code/label.lux index 1a26aab43..c70e13a3e 100644 --- a/stdlib/source/lux/target/jvm/attribute/code/label.lux +++ b/stdlib/source/lux/target/jvm/attribute/code/label.lux @@ -12,7 +12,7 @@ (def: #export equivalence (Equivalence Label) - ////encoding.u2-equivalence) + ////encoding.equivalence) (def: #export format (Format Label) diff --git a/stdlib/source/lux/target/jvm/class.lux b/stdlib/source/lux/target/jvm/class.lux index 0e95c7063..6169556c5 100644 --- a/stdlib/source/lux/target/jvm/class.lux +++ b/stdlib/source/lux/target/jvm/class.lux @@ -56,9 +56,9 @@ (def: #export equivalence (Equivalence Class) ($_ equivalence.product - //encoding.u4-equivalence - //encoding.u2-equivalence - //encoding.u2-equivalence + //encoding.equivalence + //encoding.equivalence + //encoding.equivalence //constant/pool.equivalence //modifier.equivalence //index.equivalence diff --git a/stdlib/source/lux/target/jvm/constant/pool.lux b/stdlib/source/lux/target/jvm/constant/pool.lux index c267eb7f4..7b29cc910 100644 --- a/stdlib/source/lux/target/jvm/constant/pool.lux +++ b/stdlib/source/lux/target/jvm/constant/pool.lux @@ -33,7 +33,7 @@ (template: (!add <=> ) (function (_ pool) - (with-expansions [ (as-is (index.index (encoding.to-u2 (n/+ offset idx)))) + (with-expansions [ (as-is (index.index (encoding.u2 (n/+ offset idx)))) (as-is (recur (.inc idx)))] (loop [idx 0] (case (row.nth idx pool) @@ -53,7 +53,7 @@ ]))))) (template: (!raw-index ) - (|> index.number encoding.from-u2 .nat)) + (|> index.number encoding.nat .nat)) (exception: #export (invalid-index {index (Index Any)} {maximum Nat}) @@ -89,7 +89,7 @@ (template: (!find <=> <%> ) (function (_ pool) - (with-expansions [ (as-is (index.index (encoding.to-u2 (n/+ offset idx)))) + (with-expansions [ (as-is (index.index (encoding.u2 (n/+ offset idx)))) (as-is (recur (.inc idx)))] (loop [idx 0] (case (row.nth idx pool) diff --git a/stdlib/source/lux/target/jvm/constant/tag.lux b/stdlib/source/lux/target/jvm/constant/tag.lux index 71e75f40b..352fb8afe 100644 --- a/stdlib/source/lux/target/jvm/constant/tag.lux +++ b/stdlib/source/lux/target/jvm/constant/tag.lux @@ -8,7 +8,7 @@ [type abstract]] [/// - ["." encoding (#+ U1) ("u1/." u1-equivalence)]]) + ["." encoding (#+ U1) ("u1/." equivalence)]]) (abstract: #export Tag {} @@ -23,7 +23,7 @@ (template [ ] [(def: #export Tag - (:abstraction (encoding.to-u1 )))] + (:abstraction (encoding.u1 )))] [01 utf8] [03 integer] diff --git a/stdlib/source/lux/target/jvm/encoding.lux b/stdlib/source/lux/target/jvm/encoding.lux index 33ac427c2..f5db7a81a 100644 --- a/stdlib/source/lux/target/jvm/encoding.lux +++ b/stdlib/source/lux/target/jvm/encoding.lux @@ -1,5 +1,5 @@ (.module: - [lux #* + [lux (#- nat) [abstract [equivalence (#+ Equivalence)]] [control @@ -9,44 +9,51 @@ ["." i64]] [format ["." binary (#+ Format)]]] + [macro + ["." template]] [type abstract]]) -(template [ ] - [(abstract: #export - {} +(abstract: #export (Unsigned brand) + {} + (I64 Any) - (I64 Any) + (def: #export nat + (-> (Unsigned Any) (I64 Any)) + (|>> :representation)) - (def: #export Nat ) + (structure: #export equivalence + (All [brand] (Equivalence (Unsigned brand))) + (def: (= reference sample) + ("lux i64 =" (:representation reference) (:representation sample)))) + + (template [ ] + [(with-expansions [ (template.identifier [ "'"])] + (abstract: #export {} Any) + (type: #export (Unsigned ))) - (def: #export + (def: #export Nat ) + + (def: #export + + (|> (n/* i64.bits-per-byte) i64.mask :abstraction)) + + (def: #export (-> (I64 Any) ) - (let [mask (|> - (n/* i64.bits-per-byte) - i64.mask)] - (|>> (i64.and mask) :abstraction))) - - (def: #export - (-> (I64 Any)) - (|>> :representation)) - - (structure: #export (Equivalence ) - (def: (= reference sample) - ("lux i64 =" (:representation reference) (:representation sample)))) - )] - - [1 U1 u1-bytes to-u1 from-u1 u1-equivalence] - [2 U2 u2-bytes to-u2 from-u2 u2-equivalence] - [4 U4 u4-bytes to-u4 from-u4 u4-equivalence] + (|>> (i64.and (:representation )) :abstraction))] + + [1 U1 u1-bytes u1 max-u1] + [2 U2 u2-bytes u2 max-u2] + [4 U4 u4-bytes u4 max-u4] + ) ) -(template [ ] +(template [ ] [(def: #export (Format ) - (binary.adapt ))] + (binary.adapt ..nat ))] - [u1-format U1 binary.bits/8 ..from-u1 ..to-u1] - [u2-format U2 binary.bits/16 ..from-u2 ..to-u2] - [u4-format U4 binary.bits/32 ..from-u4 ..to-u4] + [u1-format U1 binary.bits/8 ..u1] + [u2-format U2 binary.bits/16 ..u2] + [u4-format U4 binary.bits/32 ..u4] ) diff --git a/stdlib/source/lux/target/jvm/index.lux b/stdlib/source/lux/target/jvm/index.lux index 6e3d070ff..d8dd1d9a5 100644 --- a/stdlib/source/lux/target/jvm/index.lux +++ b/stdlib/source/lux/target/jvm/index.lux @@ -27,7 +27,7 @@ (All [kind] (Equivalence (Index kind))) (:: equivalence.contravariant map-1 ..number - //encoding.u2-equivalence)) + //encoding.equivalence)) (def: #export format (All [kind] (Format (Index kind))) diff --git a/stdlib/source/lux/target/jvm/magic.lux b/stdlib/source/lux/target/jvm/magic.lux index 5b74dc572..c00d246a0 100644 --- a/stdlib/source/lux/target/jvm/magic.lux +++ b/stdlib/source/lux/target/jvm/magic.lux @@ -12,7 +12,7 @@ (def: #export code Magic - (//encoding.to-u4 (hex "CAFEBABE"))) + (//encoding.u4 (hex "CAFEBABE"))) (def: #export format (Format Magic) diff --git a/stdlib/source/lux/target/jvm/modifier.lux b/stdlib/source/lux/target/jvm/modifier.lux index 6790c5afe..417484c45 100644 --- a/stdlib/source/lux/target/jvm/modifier.lux +++ b/stdlib/source/lux/target/jvm/modifier.lux @@ -27,13 +27,13 @@ (template: (!wrap value) (|> value - //encoding.to-u2 + //encoding.u2 :abstraction)) (template: (!unwrap value) (|> value :representation - //encoding.from-u2)) + //encoding.nat)) (def: #export code (-> (Modifier Any) //encoding.U2) @@ -46,7 +46,7 @@ (structure: #export equivalence (All [of] (Equivalence (Modifier of))) (def: (= reference sample) - (:: //encoding.u2-equivalence = + (:: //encoding.equivalence = (:representation reference) (:representation sample)))) diff --git a/stdlib/source/lux/target/jvm/version.lux b/stdlib/source/lux/target/jvm/version.lux index dd76a594d..ddfe7139c 100644 --- a/stdlib/source/lux/target/jvm/version.lux +++ b/stdlib/source/lux/target/jvm/version.lux @@ -12,7 +12,7 @@ (def: #export version (-> Nat Version) - //encoding.to-u2) + //encoding.u2) (template [ ] [(def: #export -- cgit v1.2.3