;;; Flush %TYPEP tests whose result is known at compile time.
(deftransform %typep ((object type))
- (unless (constant-continuation-p type) (give-up-ir1-transform))
+ (unless (constant-continuation-p type)
+ (give-up-ir1-transform))
(ir1-transform-type-predicate
object
(specifier-type (continuation-value type))))
;;; whether the single argument is known to (not) be of the
;;; appropriate type, expanding to T or NIL as appropriate.
(deftransform fold-type-predicate ((object) * * :node node :defun-only t)
- (let ((ctype (gethash (leaf-name
+ (let ((ctype (gethash (leaf-source-name
(ref-leaf
(continuation-use
(basic-combination-fun node))))
;;;;
;;;; See also VM dependent transforms.
-(def-source-transform atom (x)
+(define-source-transform atom (x)
`(not (consp ,x)))
\f
;;;; TYPEP source transform
(satisfies `(if (funcall #',(second spec) ,object) t nil))
((not and)
(once-only ((n-obj object))
- `(,(first spec) ,@(mapcar #'(lambda (x)
- `(typep ,n-obj ',x))
+ `(,(first spec) ,@(mapcar (lambda (x)
+ `(typep ,n-obj ',x))
(rest spec))))))))))
;;; Do source transformation for TYPEP of a known union type. If a
;;; to that predicate. Otherwise, we dispatch off of the type's type.
;;; These transformations can increase space, but it is hard to tell
;;; when, so we ignore policy and always do them.
-(def-source-transform typep (object spec)
+(define-source-transform typep (object spec)
;; KLUDGE: It looks bad to only do this on explicitly quoted forms,
;; since that would overlook other kinds of constants. But it turns
;; out that the DEFTRANSFORM for TYPEP detects any constant
(member-type
`(member ,object ',(member-type-members type)))
(args-type
- (compiler-warning "illegal type specifier for TYPEP: ~S"
- (cadr spec))
+ (compiler-warn "illegal type specifier for TYPEP: ~S"
+ (cadr spec))
`(%typep ,object ,spec))
(t nil))
(typecase type