]> gitweb.factorcode.org Git - factor.git/commitdiff
io.binary: faster >be.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 22 Mar 2013 00:39:34 +0000 (17:39 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 22 Mar 2013 00:39:34 +0000 (17:39 -0700)
core/io/binary/binary.factor

index 793fe0686ae72a846e1dcdd42746f24f855f2e7a..4d0c87e7edab92e2d3624eb424af1319073126fe 100644 (file)
@@ -4,26 +4,32 @@ USING: kernel math sequences ;
 IN: io.binary
 
 : le> ( seq -- x ) dup length iota 0 [ 8 * shift + ] 2reduce ;
+
 : be> ( seq -- x ) 0 [ [ 8 shift ] dip + ] reduce ;
 
 : mask-byte ( x -- y ) 0xff bitand ; inline
 
 : nth-byte ( x n -- b ) -8 * shift mask-byte ; inline
 
-: >le ( x n -- byte-array ) iota [ nth-byte ] with B{ } map-as ;
-: >be ( x n -- byte-array ) >le reverse! ;
+<PRIVATE
+
+: map-bytes ( x seq -- byte-array )
+    [ nth-byte ] with B{ } map-as ; inline
+
+PRIVATE>
+
+: >le ( x n -- byte-array ) iota map-bytes ;
+
+: >be ( x n -- byte-array ) iota <reversed> map-bytes ;
 
 : d>w/w ( d -- w1 w2 )
-    [ 0xffffffff bitand ]
-    [ -32 shift 0xffffffff bitand ] bi ;
+    [ 0xffffffff bitand ] [ -32 shift 0xffffffff bitand ] bi ;
 
 : w>h/h ( w -- h1 h2 )
-    [ 0xffff bitand ]
-    [ -16 shift 0xffff bitand ] bi ;
+    [ 0xffff bitand ] [ -16 shift 0xffff bitand ] bi ;
 
 : h>b/b ( h -- b1 b2 )
-    [ mask-byte ]
-    [ -8 shift mask-byte ] bi ;
+    [ mask-byte ] [ -8 shift mask-byte ] bi ;
 
 : signed-le> ( bytes -- x )
     [ le> ] [ length 8 * 1 - 2^ 1 - ] bi