diff --git a/src/code/exports.lisp b/src/code/exports.lisp index b127c27434df0a8a20bb3f33abc976d9db85e598..3e9631b5a955502b00cb0b114fc360159ad3c0d3 100644 --- a/src/code/exports.lisp +++ b/src/code/exports.lisp @@ -1136,7 +1136,10 @@ "CHAR-BITS" "CHAR-BYTES" ) #+x86 - (:export "COMPATIBLE-FUNCTION-TYPES-P") + (:export "COMPATIBLE-FUNCTION-TYPES-P" + "POSITIVE-FIXNUM-BITS" + "FIXNUM-TAG-BITS" + "FIXNUM-TAG-MASK") #+sparc (:export "ALLOCATION-TRAP" "POSITIVE-FIXNUM-BITS" diff --git a/src/compiler/x86/parms.lisp b/src/compiler/x86/parms.lisp index 77b04b3a4065289ceb98fc13b0937f82943329b8..6a643af9636a0c58b6635811f8d9d3cae21dc38e 100644 --- a/src/compiler/x86/parms.lisp +++ b/src/compiler/x86/parms.lisp @@ -75,6 +75,7 @@ ;;;; Machine Architecture parameters: (export '(word-bits byte-bits char-bits word-shift word-bytes char-bytes + fixnum-tag-bits fixnum-tag-mask positive-fixnum-bits float-sign-shift single-float-bias single-float-exponent-byte @@ -119,6 +120,25 @@ (defconstant word-bytes (/ word-bits byte-bits) "Number of bytes in a word.") + +(defconstant lowtag-bits 3 + "Number of bits at the low end of a pointer used for type information.") + +(defconstant lowtag-mask (1- (ash 1 lowtag-bits)) + "Mask to extract the low tag bits from a pointer.") + +(defconstant lowtag-limit (ash 1 lowtag-bits) + "Exclusive upper bound on the value of the low tag bits from a + pointer.") + +(defconstant fixnum-tag-bits (1- lowtag-bits) + "Number of tag bits used for a fixnum") + +(defconstant fixnum-tag-mask (1- (ash 1 fixnum-tag-bits)) + "Mask to get the fixnum tag") + +(defconstant positive-fixnum-bits (- word-bits fixnum-tag-bits 1) + "Maximum number of bits in a positive fixnum") ) ; eval-when (eval-when (compile load eval)