(eval-when (:compile-toplevel :execute)
-(defparameter immediate-types
+(defparameter *immediate-types*
(list unbound-marker-type base-char-type))
-(defparameter function-header-types
+(defparameter *fun-header-types*
(list funcallable-instance-header-type
- byte-code-function-type byte-code-closure-type
- function-header-type closure-function-header-type
+ simple-fun-header-type
+ closure-fun-header-type
closure-header-type))
(defun canonicalize-headers (headers)
t))
(lowtags (remove lowtag-limit type-codes :test #'<))
(extended (remove lowtag-limit type-codes :test #'>))
- (immediates (intersection extended immediate-types :test #'eql))
- (headers (set-difference extended immediate-types :test #'eql))
- (function-p (if (intersection headers function-header-types)
- (if (subsetp headers function-header-types)
+ (immediates (intersection extended *immediate-types* :test #'eql))
+ (headers (set-difference extended *immediate-types* :test #'eql))
+ (function-p (if (intersection headers *fun-header-types*)
+ (if (subsetp headers *fun-header-types*)
t
(error "can't test for mix of function subtypes ~
and normal header types"))
(defun %test-headers (value target not-p function-p headers
&optional (drop-through (gen-label)) al-loaded)
- (let ((lowtag (if function-p function-pointer-type other-pointer-type)))
+ (let ((lowtag (if function-p fun-pointer-type other-pointer-type)))
(multiple-value-bind (equal less-or-equal when-true when-false)
;; EQUAL and LESS-OR-EQUAL are the conditions for branching to TARGET.
;; WHEN-TRUE and WHEN-FALSE are the labels to branch to when we know
#+nil
(defun %test-headers (value target not-p function-p headers
&optional (drop-through (gen-label)) al-loaded)
- (let ((lowtag (if function-p function-pointer-type other-pointer-type)))
+ (let ((lowtag (if function-p fun-pointer-type other-pointer-type)))
(multiple-value-bind (equal less-or-equal when-true when-false)
;; EQUAL and LESS-OR-EQUAL are the conditions for branching to TARGET.
;; WHEN-TRUE and WHEN-FALSE are the labels to branch to when we know
(:info target not-p)
(:policy :fast-safe))
-;;; Simpler VOP that don't need a temporary register.
+;;; simpler VOP that don't need a temporary register
(define-vop (simple-check-type)
(:args (value :target result :scs (any-reg descriptor-reg)))
(:results (result :scs (any-reg descriptor-reg)
even-fixnum-type odd-fixnum-type)
(def-type-vops functionp check-function function
- object-not-function-error function-pointer-type)
+ object-not-function-error fun-pointer-type)
(def-type-vops listp check-list list object-not-list-error
list-pointer-type)
simple-array-type complex-string-type complex-bit-vector-type
complex-vector-type complex-array-type)
-(def-type-vops nil check-function-or-symbol nil
- object-not-function-or-symbol-error
- function-pointer-type symbol-header-type)
-
(def-type-vops stringp check-string nil object-not-string-error
simple-string-type complex-string-type)
YEP
(move result value)))
-;;; An (unsigned-byte 32) can be represented with either a positive fixnum, a
-;;; bignum with exactly one positive digit, or a bignum with exactly two digits
-;;; and the second digit all zeros.
-
+;;; An (unsigned-byte 32) can be represented with either a positive
+;;; fixnum, a bignum with exactly one positive digit, or a bignum with
+;;; exactly two digits and the second digit all zeros.
(define-vop (unsigned-byte-32-p type-predicate)
(:translate unsigned-byte-32-p)
(:generator 45