]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://factorcode.org/git/factor
authorDaniel Ehrenberg <littledan@pool-224-36.res.carleton.edu>
Wed, 20 Jan 2010 06:15:55 +0000 (00:15 -0600)
committerDaniel Ehrenberg <littledan@pool-224-36.res.carleton.edu>
Wed, 20 Jan 2010 06:15:55 +0000 (00:15 -0600)
Conflicts:

basis/compiler/tree/propagation/transforms/transforms.factor

basis/compiler/tree/propagation/transforms/transforms.factor
core/math/integers/integers.factor

index 63c0aea13ebf931dd8e197be625e6dd0c5f6f434..2d145ef74f637265b300fd14ad350f1ea6229433 100644 (file)
@@ -282,6 +282,15 @@ CONSTANT: lookup-table-at-max 256
 
 \ 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
+
 ! Speeds up sum-file, sort and reverse-complement benchmarks by
 ! compiling decoder-readln better
 \ push [
index e95c6d832b4591606a6bd75c8c84a5f4260950f7..9f7543ca133d976f1ac9293a4a3baa78e45cd9a6 100644 (file)
@@ -58,7 +58,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 ;