X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdebug-info.lisp;h=bc099347b855f7241db45313be5e6690358bf21c;hb=95591ed483dbb8c0846c129953acac1554f28809;hp=2e024560ab485b29a0ad685074ff567e3b54e4b5;hpb=f22ad70037030c07074327cf239bd84dc17b44b6;p=sbcl.git diff --git a/src/code/debug-info.lisp b/src/code/debug-info.lisp index 2e02456..bc09934 100644 --- a/src/code/debug-info.lisp +++ b/src/code/debug-info.lisp @@ -278,13 +278,15 @@ (name (missing-arg) :type t) ;; A list of DEBUG-SOURCE structures describing where the code for this ;; component came from, in the order that they were read. - ;; - ;; KLUDGE: comment from CMU CL: - ;; *** NOTE: the offset of this slot is wired into the fasl dumper - ;; *** so that it can backpatch the source info when compilation - ;; *** is complete. (source nil)) +(defconstant +debug-info-source-index+ + (let* ((dd (find-defstruct-description 'debug-info)) + (slots (dd-slots dd)) + (source (locally (declare (notinline find)) ; bug 117 bogowarning + (find 'source slots :key #'dsd-name)))) + (dsd-index source))) + (def!struct (compiled-debug-info (:include debug-info) #-sb-xc-host (:pure t)) @@ -301,3 +303,13 @@ ;; works? Would this break if we used a more general memory map? -- ;; WHN 20000120 (fun-map (missing-arg) :type simple-vector :read-only t)) + +(defvar *!initial-debug-sources*) + +(defun !debug-info-cold-init () + (let ((now (get-universal-time))) + (dolist (debug-source *!initial-debug-sources*) + (let* ((namestring (debug-source-namestring debug-source)) + (timestamp (file-write-date namestring))) + (setf (debug-source-created debug-source) timestamp + (debug-source-compiled debug-source) now)))))