From 012fbee7176df4472ef4add1a7df558d762bc4f6 Mon Sep 17 00:00:00 2001 From: William Harold Newman Date: Wed, 17 Oct 2001 13:39:26 +0000 Subject: [PATCH] 0.pre7.70: The definition of functions using INFO :FOO :BAR can't safely be mixed among the definitions of info classes (like :FOO) and types (like :BAR). This is a misfeature, but even though it's just bitten me I've got many more urgent things to do than fixing it, so I just moved the definition of DEFUN FUN-NAME-INLINE-EXPANSION from globaldb.lisp into info-functions.lisp. --- src/compiler/globaldb.lisp | 12 ++---------- src/compiler/info-functions.lisp | 11 +++++++++++ version.lisp-expr | 2 +- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/compiler/globaldb.lisp b/src/compiler/globaldb.lisp index 7c137a3..175cf6a 100644 --- a/src/compiler/globaldb.lisp +++ b/src/compiler/globaldb.lisp @@ -827,8 +827,8 @@ (get-info-value ,name ,(type-info-number info) ,@(when env-list-p `(,env-list))) - (values (the ,(type-info-type info) ,value) - ,foundp))) + (declare (type ,(type-info-type info) ,value)) + (values ,value ,foundp))) whole)) (defun (setf info) (new-value class @@ -1083,14 +1083,6 @@ :type :inline-expansion-designator :type-spec (or list function) :default nil) -;;; Decode any raw (INFO :FUNCTION :INLINE-EXPANSION-DESIGNATOR FUN-NAME) -;;; value into a lambda expression, or return NIL if there is none. -(declaim (ftype (function ((or symbol cons)) list) fun-name-inline-expansion)) -(defun fun-name-inline-expansion (fun-name) - (let ((info (info :function :inline-expansion-designator fun-name))) - (if (functionp info) - (funcall info) - info))) ;;; This specifies whether this function may be expanded inline. If ;;; null, we don't care. diff --git a/src/compiler/info-functions.lisp b/src/compiler/info-functions.lisp index b74f637..cd5327f 100644 --- a/src/compiler/info-functions.lisp +++ b/src/compiler/info-functions.lisp @@ -17,6 +17,8 @@ (in-package "SB!C") +;;;; internal utilities defined in terms of INFO + ;;; Check that NAME is a valid function name, returning the name if ;;; OK, and signalling an error if not. In addition to checking for ;;; basic well-formedness, we also check that symbol names are not NIL @@ -107,6 +109,15 @@ (setf (info :function :where-from name) :defined) (if (info :function :assumed-type name) (setf (info :function :assumed-type name) nil)))) + +;;; Decode any raw (INFO :FUNCTION :INLINE-EXPANSION-DESIGNATOR FUN-NAME) +;;; value into a lambda expression, or return NIL if there is none. +(declaim (ftype (function ((or symbol cons)) list) fun-name-inline-expansion)) +(defun fun-name-inline-expansion (fun-name) + (let ((info (info :function :inline-expansion-designator fun-name))) + (if (functionp info) + (funcall info) + info))) ;;;; ANSI Common Lisp functions which are defined in terms of the info ;;;; database diff --git a/version.lisp-expr b/version.lisp-expr index 1de7049..ed60d1a 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; for internal versions, especially for internal versions off the ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.pre7.69" +"0.pre7.70" -- 1.7.10.4