X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fglobaldb.lisp;h=6a8fa7b5133765a89568a7752e2ad07b626076ee;hb=942e45e3bb73fd55786e4a0ab4590324063c0c89;hp=b72a6727f62163463bf8bf7829bfab067238eab7;hpb=8dbc4249380e18a193f4e79306bd958cd88ad9aa;p=sbcl.git diff --git a/src/compiler/globaldb.lisp b/src/compiler/globaldb.lisp index b72a672..6a8fa7b 100644 --- a/src/compiler/globaldb.lisp +++ b/src/compiler/globaldb.lisp @@ -198,13 +198,13 @@ #+sb-xc (/nohexstr class) (prog1 (flet ((lookup (class) - (or (gethash class *info-classes*) - (error "~S is not a defined info class." class)))) - (if (symbolp class) - (or (get class 'class-info-or-lose-cache) - (setf (get class 'class-info-or-lose-cache) - (lookup class))) - (lookup class))) + (or (gethash class *info-classes*) + (error "~S is not a defined info class." class)))) + (if (symbolp class) + (or (get class 'class-info-or-lose-cache) + (setf (get class 'class-info-or-lose-cache) + (lookup class))) + (lookup class))) #+sb-xc (/noshow0 "returning from CLASS-INFO-OR-LOSE"))) (declaim (ftype (function (keyword keyword) type-info) type-info-or-lose)) (defun type-info-or-lose (class type) @@ -1376,6 +1376,33 @@ :type-spec list :default ()) +;;; Used to record the source location of definitions. +(define-info-class :source-location) + +(define-info-type + :class :source-location + :type :variable + :type-spec t + :default nil) + +(define-info-type + :class :source-location + :type :constant + :type-spec t + :default nil) + +(define-info-type + :class :source-location + :type :typed-structure + :type-spec t + :default nil) + +(define-info-type + :class :source-location + :type :symbol-macro + :type-spec t + :default nil) + #!-sb-fluid (declaim (freeze-type info-env)) ;;; Now that we have finished initializing *INFO-CLASSES* and