using if-zero in even more places.
parent
b9900248b7
commit
2f325e4fee
|
@ -38,10 +38,10 @@ HOOK: reserved-stack-space cpu ( -- n )
|
|||
: spill@ ( n -- op ) spill-offset special-offset stack@ ;
|
||||
|
||||
: decr-stack-reg ( n -- )
|
||||
dup 0 = [ drop ] [ stack-reg swap SUB ] if ;
|
||||
[ stack-reg swap SUB ] unless-zero ;
|
||||
|
||||
: incr-stack-reg ( n -- )
|
||||
dup 0 = [ drop ] [ stack-reg swap ADD ] if ;
|
||||
[ stack-reg swap ADD ] unless-zero ;
|
||||
|
||||
: align-stack ( n -- n' ) 16 align ;
|
||||
|
||||
|
@ -61,7 +61,7 @@ M: x86 test-instruction? t ;
|
|||
|
||||
M: x86 immediate-store? immediate-comparand? ;
|
||||
|
||||
M: x86 %load-immediate dup 0 = [ drop dup XOR ] [ MOV ] if ;
|
||||
M: x86 %load-immediate [ dup XOR ] [ MOV ] if-zero ;
|
||||
|
||||
M: x86 %load-reference
|
||||
[ swap 0 MOV rc-absolute-cell rel-literal ]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (C) 2008 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors alien.c-types alien.data alien.strings
|
||||
combinators continuations destructors fry io io.backend
|
||||
assocs combinators continuations destructors fry io io.backend
|
||||
io.directories io.encodings.binary io.files.info.unix
|
||||
io.encodings.utf8 io.files io.pathnames io.files.types kernel
|
||||
math.bitwise sequences system unix unix.stat vocabs.loader
|
||||
|
@ -31,7 +31,7 @@ M: unix delete-directory ( path -- )
|
|||
|
||||
M: unix copy-file ( from to -- )
|
||||
[ normalize-path ] bi@
|
||||
[ call-next-method ]
|
||||
[ call-next-method ]
|
||||
[ [ file-permissions ] dip swap set-file-permissions ] 2bi ;
|
||||
|
||||
: with-unix-directory ( path quot -- )
|
||||
|
@ -48,17 +48,16 @@ M: unix find-next-file ( DIR* -- byte-array )
|
|||
void* deref [ drop f ] unless ;
|
||||
|
||||
: dirent-type>file-type ( ch -- type )
|
||||
{
|
||||
{ DT_BLK [ +block-device+ ] }
|
||||
{ DT_CHR [ +character-device+ ] }
|
||||
{ DT_DIR [ +directory+ ] }
|
||||
{ DT_LNK [ +symbolic-link+ ] }
|
||||
{ DT_SOCK [ +socket+ ] }
|
||||
{ DT_FIFO [ +fifo+ ] }
|
||||
{ DT_REG [ +regular-file+ ] }
|
||||
{ DT_WHT [ +whiteout+ ] }
|
||||
[ drop +unknown+ ]
|
||||
} case ;
|
||||
H{
|
||||
{ $ DT_BLK +block-device+ }
|
||||
{ $ DT_CHR +character-device+ }
|
||||
{ $ DT_DIR +directory+ }
|
||||
{ $ DT_LNK +symbolic-link+ }
|
||||
{ $ DT_SOCK +socket+ }
|
||||
{ $ DT_FIFO +fifo+ }
|
||||
{ $ DT_REG +regular-file+ }
|
||||
{ $ DT_WHT +whiteout+ }
|
||||
} at* [ drop +unknown+ ] unless ;
|
||||
|
||||
M: unix >directory-entry ( byte-array -- directory-entry )
|
||||
{
|
||||
|
|
|
@ -159,8 +159,7 @@ M: process-failed error.
|
|||
] [ process>> . ] bi ;
|
||||
|
||||
: wait-for-success ( process -- )
|
||||
dup wait-for-process 0 =
|
||||
[ drop ] [ process-failed ] if ;
|
||||
dup wait-for-process [ drop ] [ process-failed ] if-zero ;
|
||||
|
||||
: try-process ( desc -- )
|
||||
run-process wait-for-success ;
|
||||
|
|
|
@ -18,7 +18,7 @@ ERROR: bad-length bytes n ;
|
|||
1 - 8 * 0 swap 8 <range> ; inline
|
||||
|
||||
: reassemble-bytes ( range -- quot )
|
||||
[ dup 0 = [ drop [ ] ] [ '[ _ shift ] ] if ] map
|
||||
[ [ [ ] ] [ '[ _ shift ] ] if-zero ] map
|
||||
'[ [ _ spread ] [ bitor ] reduce-outputs ] ; inline
|
||||
|
||||
MACRO: reassemble-be ( n -- quot ) be-range reassemble-bytes ;
|
||||
|
|
|
@ -19,7 +19,7 @@ IN: math.text.english
|
|||
f f "twenty" "thirty" "forty" "fifty" "sixty"
|
||||
"seventy" "eighty" "ninety"
|
||||
} nth ;
|
||||
|
||||
|
||||
: scale-numbers ( n -- str ) ! up to 10^99
|
||||
{
|
||||
f "thousand" "million" "billion" "trillion" "quadrillion"
|
||||
|
@ -51,9 +51,9 @@ SYMBOL: and-needed?
|
|||
: tens-place ( n -- str )
|
||||
100 mod dup 20 >= [
|
||||
10 /mod [ tens ] dip
|
||||
dup 0 = [ drop ] [ small-numbers "-" glue ] if
|
||||
[ small-numbers "-" glue ] unless-zero
|
||||
] [
|
||||
dup 0 = [ drop "" ] [ small-numbers ] if
|
||||
[ "" ] [ small-numbers ] if-zero
|
||||
] if ;
|
||||
|
||||
: 3digits>text ( n -- str )
|
||||
|
|
Loading…
Reference in New Issue