From 465a969b614fb8c267b89650bc8d19866e181eb3 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Tue, 21 Aug 2012 17:54:01 -0700 Subject: [PATCH] layouts: defining "fixnum-bits". --- .../compiler/tree/propagation/transforms/transforms.factor | 3 --- core/layouts/layouts-docs.factor | 3 +++ core/layouts/layouts.factor | 7 ++++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/basis/compiler/tree/propagation/transforms/transforms.factor b/basis/compiler/tree/propagation/transforms/transforms.factor index d1793208ae..180413abb8 100644 --- a/basis/compiler/tree/propagation/transforms/transforms.factor +++ b/basis/compiler/tree/propagation/transforms/transforms.factor @@ -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 ? ; diff --git a/core/layouts/layouts-docs.factor b/core/layouts/layouts-docs.factor index efea1ffb4e..2897f48e34 100644 --- a/core/layouts/layouts-docs.factor +++ b/core/layouts/layouts-docs.factor @@ -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" } } ; diff --git a/core/layouts/layouts.factor b/core/layouts/layouts.factor index 78d8b68209..643e5c221a 100644 --- a/core/layouts/layouts.factor +++ b/core/layouts/layouts.factor @@ -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