X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fgeneric%2Fvm-type.lisp;h=091475c953d7aed5894c8ec21f9580612e9f2743;hb=4eb1a6d3ad2b7dcc19ac0ec979a1eb1eb049659a;hp=2db6b49ac779f6adf44b3827ca673c97b740b0bd;hpb=cea4896b2482b7b2b429c1631d774b4cfbc0efba;p=sbcl.git diff --git a/src/compiler/generic/vm-type.lisp b/src/compiler/generic/vm-type.lisp index 2db6b49..091475c 100644 --- a/src/compiler/generic/vm-type.lisp +++ b/src/compiler/generic/vm-type.lisp @@ -14,11 +14,13 @@ (in-package "SB!KERNEL") +(/show0 "vm-type.lisp 17") + (!begin-collecting-cold-init-forms) ;;;; FIXME: I'm not sure where to put this. -- WHN 19990817 -(deftype sb!vm:word () `(unsigned-byte ,sb!vm:word-bits)) +(deftype sb!vm:word () `(unsigned-byte ,sb!vm:n-word-bits)) ;;;; implementation-dependent DEFTYPEs @@ -70,7 +72,7 @@ ;;; internal time format. (Note: not a FIXNUM, ouch..) (sb!xc:deftype internal-time () 'unsigned-byte) -(sb!xc:deftype bignum-element-type () `(unsigned-byte ,sb!vm:word-bits)) +(sb!xc:deftype bignum-element-type () `(unsigned-byte ,sb!vm:n-word-bits)) (sb!xc:deftype bignum-type () 'bignum) (sb!xc:deftype bignum-index () 'index) @@ -122,7 +124,7 @@ ;;; This function is called when the type code wants to find out how ;;; an array will actually be implemented. We set the -;;; Specialized-Element-Type to correspond to the actual +;;; SPECIALIZED-ELEMENT-TYPE to correspond to the actual ;;; specialization used in this implementation. (declaim (ftype (function (array-type) array-type) specialize-array-type)) (defun specialize-array-type (type) @@ -131,8 +133,7 @@ (if (eq eltype *wild-type*) *wild-type* (dolist (stype-name *specialized-array-element-types* - ;; FIXME: Use *UNIVERSAL-TYPE* here? - (specifier-type 't)) + *universal-type*) ;; FIXME: Mightn't it be better to have ;; *SPECIALIZED-ARRAY-ELEMENT-TYPES* be stored as precalculated ;; SPECIFIER-TYPE results, instead of having to calculate @@ -154,16 +155,19 @@ (when (csubtypep subtype (specifier-type type)) (return type)))) -;;; If Type has a CHECK-xxx template, but doesn't have a corresponding -;;; primitive-type, then return the template's name. Otherwise, return NIL. +;;; If TYPE has a CHECK-xxx template, but doesn't have a corresponding +;;; PRIMITIVE-TYPE, then return the template's name. Otherwise, return NIL. (defun hairy-type-check-template-name (type) (declare (type ctype type)) (typecase type - (named-type - (case (named-type-name type) - (cons 'sb!c:check-cons) - (symbol 'sb!c:check-symbol) - (t nil))) + (cons-type + (if (type= type (specifier-type 'cons)) + 'sb!c:check-cons + nil)) + (built-in-class + (if (type= type (specifier-type 'symbol)) + 'sb!c:check-symbol + nil)) (numeric-type (cond ((type= type (specifier-type 'fixnum)) 'sb!c:check-fixnum) @@ -172,9 +176,11 @@ ((type= type (specifier-type '(unsigned-byte 32))) 'sb!c:check-unsigned-byte-32) (t nil))) - (function-type + (fun-type 'sb!c:check-function) (t nil))) (!defun-from-collected-cold-init-forms !vm-type-cold-init) + +(/show0 "vm-type.lisp end of file")