]> gitweb.factorcode.org Git - factor.git/commitdiff
I/O ricing: various hints added so that UTF8 and ASCII fastpaths compile with less...
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 6 Nov 2008 06:02:44 +0000 (00:02 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 6 Nov 2008 06:02:44 +0000 (00:02 -0600)
basis/compiler/tree/propagation/inlining/inlining.factor
basis/hints/hints.factor
basis/io/buffers/buffers.factor
basis/io/encodings/ascii/ascii.factor
basis/io/ports/ports.factor
core/io/encodings/encodings.factor

index 130b94cf6b99eead0f784a14887b2f5f3fee9c82..8397a5fdbb4d1a0bfff542f289eee0ac866c8293 100644 (file)
@@ -131,7 +131,7 @@ DEFER: (flat-length)
     ] bi* + + + + + ;
 
 : should-inline? ( #call word -- ? )
-    inlining-rank 5 >= ;
+    dup "inline" word-prop [ 2drop t ] [ inlining-rank 5 >= ] if ;
 
 SYMBOL: history
 
index a10588d7300a16fee81e64606245ba34c394420a..06ca209caee2e86cca04003c09df9bea62ad0166 100644 (file)
@@ -64,10 +64,12 @@ IN: hints
 { first first2 first3 first4 }
 [ { array } "specializer" set-word-prop ] each
 
-{ peek pop* pop push } [
+{ peek pop* pop } [
     { vector } "specializer" set-word-prop
 ] each
 
+\ push { { vector } { sbuf } } "specializer" set-word-prop
+
 \ push-all
 { { string sbuf } { array vector } { byte-array byte-vector } }
 "specializer" set-word-prop
index e6a0070ee0e5bc13c08d70cda15d3a279bfc8999..4df081b17de6932b8c381cf802cb131fd9aab23d 100644 (file)
@@ -36,9 +36,7 @@ M: buffer dispose* ptr>> free ;
     [ ptr>> ] [ pos>> ] bi alien-unsigned-1 ; inline
 
 : buffer-pop ( buffer -- byte )
-    [ buffer-peek ] [ 1 swap buffer-consume ] bi ;
-
-HINTS: buffer-pop buffer ;
+    [ buffer-peek ] [ 1 swap buffer-consume ] bi ; inline
 
 : buffer-length ( buffer -- n )
     [ fill>> ] [ pos>> ] bi - ; inline
@@ -69,14 +67,13 @@ HINTS: n>buffer fixnum buffer ;
 HINTS: >buffer byte-array buffer ;
 
 : byte>buffer ( byte buffer -- )
+    [ >fixnum ] dip
     [ [ ptr>> ] [ fill>> ] bi set-alien-unsigned-1 ]
     [ 1 swap n>buffer ]
-    bi ;
-
-HINTS: byte>buffer fixnum buffer ;
+    bi ; inline
 
 : search-buffer-until ( pos fill ptr separators -- n )
-    [ [ swap alien-unsigned-1 ] dip memq? ] 2curry find-from drop ;
+    [ [ swap alien-unsigned-1 ] dip memq? ] 2curry find-from drop ; inline
 
 : finish-buffer-until ( buffer n -- byte-array separator )
     [
@@ -86,7 +83,7 @@ HINTS: byte>buffer fixnum buffer ;
     ] [
         [ buffer-length ] keep
         buffer-read f
-    ] if* ;
+    ] if* ; inline
 
 : buffer-until ( separators buffer -- byte-array separator )
     swap [ { [ ] [ pos>> ] [ fill>> ] [ ptr>> ] } cleave ] dip
index 08dc8d07d91b081330f5e8a1cc109323ed831f4e..0803ba3871be14008780484d1829759e87a525a5 100644 (file)
@@ -9,7 +9,7 @@ IN: io.encodings.ascii
 
 : decode-if< ( stream encoding max -- character )
     nip swap stream-read1 dup
-    [ tuck > [ drop replacement-char ] unless ] [ 2drop f ] if ; inline
+    [ tuck > [ >fixnum ] [ drop replacement-char ] if ] [ 2drop f ] if ; inline
 PRIVATE>
 
 SINGLETON: ascii
index 909b2dcf3bfeb7d792edce4536f157fee131b3cb..6ee982fcda5ab62d30a5d60b336424b77e0f18ea 100644 (file)
@@ -100,7 +100,7 @@ TUPLE: output-port < buffered-port ;
 
 : wait-to-write ( len port -- )
     tuck buffer>> buffer-capacity <=
-    [ drop ] [ stream-flush ] if ;
+    [ drop ] [ stream-flush ] if ; inline
 
 M: output-port stream-write1
     dup check-disposed
@@ -161,4 +161,4 @@ HINTS: decoder-read-until { string input-port utf8 } { string input-port ascii }
 
 HINTS: decoder-readln { input-port utf8 } { input-port ascii } ;
 
-HINTS: decoder-write { string output-port utf8 } { string output-port ascii } ;
+HINTS: encoder-write { string output-port utf8 } { string output-port ascii } ;
index 36cec298bdf0b4e26b697198a3a577d30ce17d79..48a428d36e6c480a7b789bee4b2e4395e662b603 100644 (file)
@@ -124,11 +124,11 @@ M: object <encoder> encoder boa ;
 M: encoder stream-write1
     >encoder< encode-char ;
 
-: decoder-write ( string stream encoding -- )
+: encoder-write ( string stream encoding -- )
     [ encode-char ] 2curry each ;
 
 M: encoder stream-write
-    >encoder< decoder-write ;
+    >encoder< encoder-write ;
 
 M: encoder dispose stream>> dispose ;