Adding compiler transforms in propagation

release
Daniel Ehrenberg 2010-01-20 00:10:49 -06:00
parent d2fe75276e
commit aa1651032d
2 changed files with 13 additions and 1 deletions

View File

@ -300,3 +300,12 @@ CONSTANT: lookup-table-at-max 256
tester '[ _ filter ] ;
\ intersect [ intersect-quot ] 1 define-partial-eval
: fixnum-bits ( -- n )
cell-bits tag-bits get - ;
: bit-quot ( #call -- quot/f )
in-d>> second value-info interval>> 0 fixnum-bits [a,b] interval-subset?
[ [ >fixnum ] dip fixnum-bit? ] f ? ;
\ bit? [ bit-quot ] "custom-inlining" set-word-prop

View File

@ -55,7 +55,10 @@ M: fixnum shift >fixnum fixnum-shift ; inline
M: fixnum bitnot fixnum-bitnot ; inline
M: fixnum bit? neg shift 1 bitand 0 > ; inline
: fixnum-bit? ( n m -- b )
neg shift 1 bitand 0 > ;
M: fixnum bit? fixnum-bit? ; inline
: fixnum-log2 ( x -- n )
0 swap [ dup 1 eq? ] [ [ 1 + ] [ 2/ ] bi* ] until drop ;