X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdebug-int.lisp;h=ea6149bdde346fad8c333769331294ff2ea5af2a;hb=95f5ac2fa70b3f14d052e20f4250166f219dcc39;hp=f477b913161692d498eb5c5198a620b1b3393d40;hpb=5e3fb5149366dd84a5cb76bf1cf5f2324c24ca57;p=sbcl.git diff --git a/src/code/debug-int.lisp b/src/code/debug-int.lisp index f477b91..ea6149b 100644 --- a/src/code/debug-int.lisp +++ b/src/code/debug-int.lisp @@ -670,7 +670,7 @@ ;;;; frames -;;; This is used in FIND-ESCAPE-FRAME and with the bogus components +;;; This is used in FIND-ESCAPED-FRAME and with the bogus components ;;; and LRAs used for :function-end breakpoints. When a components ;;; debug-info slot is :bogus-lra, then the real-lra-slot contains the ;;; real component to continue executing, as opposed to the bogus @@ -1064,27 +1064,22 @@ #!+x86 (defun compute-calling-frame (caller ra up-frame) (declare (type system-area-pointer caller ra)) -; (format t "ccf: ~A ~A ~A~%" caller ra up-frame) (when (cstack-pointer-valid-p caller) -; (format t "ccf2~%") ;; First check for an escaped frame. (multiple-value-bind (code pc-offset escaped) (find-escaped-frame caller) (cond (code ;; If it's escaped it may be a function end breakpoint trap. -; (format t "ccf2: escaped ~S ~S~%" code pc-offset) (when (and (code-component-p code) (eq (%code-debug-info code) :bogus-lra)) ;; If :bogus-lra grab the real lra. (setq pc-offset (code-header-ref code (1+ real-lra-slot))) (setq code (code-header-ref code real-lra-slot)) -; (format t "ccf3 :bogus-lra ~S ~S~%" code pc-offset) (aver code))) (t - ;; Not escaped + ;; not escaped (multiple-value-setq (pc-offset code) (compute-lra-data-from-pc ra)) -; (format t "ccf4 ~S ~S~%" code pc-offset) (unless code (setf code :foreign-function pc-offset 0 @@ -1111,6 +1106,13 @@ #!+x86 (defun find-escaped-frame (frame-pointer) (declare (type system-area-pointer frame-pointer)) + + ;; FIXME: These conditionals are a hack to get the system to + ;; bootstrap itself despite a byte interpreter/compiler bug. Without + ;; it, the byte interpreter blows up when trying to cross-compile + ;; this function, hitting #:UNINITIALIZED-EVAL-STACK-ELEMENT while + ;; executing (SB-XC:MACRO-FUNCTION 'SB!EXT:WITH-ALIEN). + #+sb-xc (values nil 0 nil) #-sb-xc ; REMOVEME (dotimes (index *free-interrupt-context-index* (values nil 0 nil)) (sb!alien:with-alien ((lisp-interrupt-contexts (array (* os-context-t) nil)