layouts: defining "fixnum-bits".

db4
John Benediktsson 2012-08-21 17:54:01 -07:00
parent 84e8041a9c
commit 465a969b61
3 changed files with 9 additions and 4 deletions

View File

@ -293,9 +293,6 @@ M\ set diff [ diff-quot ] 1 define-partial-eval
M\ set 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 ? ;

View File

@ -22,6 +22,9 @@ HELP: tag-fixnum
{ $values { "n" integer } { "tagged" integer } }
{ $description "Outputs a tagged fixnum." } ;
HELP: fixnum-bits
{ $values { "n" "number of bits in a fixnum" } } ;
HELP: first-bignum
{ $values { "n" "smallest positive integer not representable by a fixnum" } } ;

View File

@ -38,7 +38,9 @@ SYMBOL: header-bits
<<
: cell ( -- n ) OBJ-CELL-SIZE special-object ; foldable
: (first-bignum) ( m -- n ) tag-bits get - 1 - 2^ ; foldable
: (fixnum-bits) ( m -- n ) tag-bits get - ; foldable
: (first-bignum) ( m -- n ) (fixnum-bits) 1 - 2^ ; foldable
>>
: cells ( m -- n ) cell * ; inline
@ -54,6 +56,9 @@ SYMBOL: header-bits
: first-bignum ( -- n )
cell-bits (first-bignum) ; inline
: fixnum-bits ( -- n )
cell-bits (fixnum-bits) ; inline
: most-positive-fixnum ( -- n )
first-bignum 1 - >fixnum ; inline