layouts: defining "fixnum-bits".
parent
84e8041a9c
commit
465a969b61
|
@ -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 ? ;
|
||||
|
|
|
@ -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" } } ;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue