From: Nikodemus Siivola Date: Wed, 1 Nov 2006 13:00:40 +0000 (+0000) Subject: 0.9.18.20: correct step-frame logic on non-x86oids X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=90a83478829f33b91f6300c183b374a968bc13c6;p=sbcl.git 0.9.18.20: correct step-frame logic on non-x86oids * Single-stepping tests now pass on ppc/darwin, at least. --- diff --git a/NEWS b/NEWS index 633e02e..bc80266 100644 --- a/NEWS +++ b/NEWS @@ -14,7 +14,8 @@ changes in sbcl-0.9.19 (1.0.0?) relative to sbcl-0.9.18: fill-pointer signals a type-error as required. (thanks to Lars Brinkhoff) * bug fix: disassemly of funcallable instances works. - * improvements to the Windows port: + * bug fix: single stepping on PPC. + * Improvements to the Windows port: ** floating point exceptions are now reported correctly. ** stack exhaustion detection works partially. ** more accurate GET-INTERNAL-REAL-TIME. diff --git a/src/code/debug-int.lisp b/src/code/debug-int.lisp index 3145358..532963e 100644 --- a/src/code/debug-int.lisp +++ b/src/code/debug-int.lisp @@ -3317,8 +3317,7 @@ register." ;;; which will signal the condition. (defun handle-single-step-trap (context-sap kind callee-register-offset) - (let ((context (sb!alien:sap-alien context-sap - (* os-context-t)))) + (let ((context (sb!alien:sap-alien context-sap (* os-context-t)))) ;; The following calls must get tail-call eliminated for ;; *STEP-FRAME* to get set correctly on non-x86. (if (= kind single-step-before-trap) @@ -3343,10 +3342,10 @@ register." ;; on non-x86. (loop with frame = (frame-down (top-frame)) while frame - for dfun = (frame-debug-fun *step-frame*) + for dfun = (frame-debug-fun frame) do (when (typep dfun 'compiled-debug-fun) (return frame)) - do (setf *step-frame* (frame-down *step-frame*))))) + do (setf frame (frame-down frame))))) (sb!impl::step-form step-info ;; We could theoretically store information in ;; the debug-info about to determine the diff --git a/src/code/step.lisp b/src/code/step.lisp index 9d63d34..66a8313 100644 --- a/src/code/step.lisp +++ b/src/code/step.lisp @@ -50,17 +50,6 @@ (signal 'step-finished-condition) (continue ()))) -(defvar *step-help* "The following commands are available at the single -stepper's prompt: - - S: Step into the current expression. - N: Evaluate the current expression without stepping. - C: Evaluate to finish without stepping. - Q: Abort evaluation. - B: Backtrace. - ?: Display this message. -") - (defgeneric single-step (condition)) (defmethod single-step ((condition step-values-condition)) @@ -109,8 +98,7 @@ outside the lexical scope of the form can be stepped into only if the functions in question have been compiled with sufficient DEBUG policy to be at least partially steppable." `(locally - (declare (optimize debug (sb-c:insert-step-conditions 0))) - (format t "Single stepping. Type ? for help.~%") + (declare (optimize debug (sb-c:insert-step-conditions 0))) ;; Allow stepping out of the STEP form. (let ((*step-out* :maybe)) (unwind-protect diff --git a/src/compiler/ppc/call.lisp b/src/compiler/ppc/call.lisp index 038a510..5f21eeb 100644 --- a/src/compiler/ppc/call.lisp +++ b/src/compiler/ppc/call.lisp @@ -618,11 +618,11 @@ default-value-8 ,@(unless (or (eq return :tail) variable) '((:move-args :full-call))) - (:vop-var vop) - (:info ,@(unless (or variable (eq return :tail)) '(arg-locs)) - ,@(unless variable '(nargs)) - ,@(when (eq return :fixed) '(nvals)) - step-instrumenting) + (:vop-var vop) + (:info ,@(unless (or variable (eq return :tail)) '(arg-locs)) + ,@(unless variable '(nargs)) + ,@(when (eq return :fixed) '(nvals)) + step-instrumenting) (:ignore ,@(unless (or variable (eq return :tail)) '(arg-locs)) @@ -750,7 +750,7 @@ default-value-8 (insert-step-instrumenting (callable-tn) ;; Conditionally insert a conditional trap: (when step-instrumenting - ;; Get the symbol-value of SB!IMPL::*STEPPING* + ;; Get the symbol-value of SB!IMPL::*STEPPING* (loadw stepping null-tn (+ symbol-value-slot @@ -847,7 +847,6 @@ default-value-8 (define-full-call call-variable nil :fixed t) (define-full-call multiple-call-variable nil :unknown t) - ;;; Defined separately, since needs special code that BLT's the ;;; arguments down. (define-vop (tail-call-variable) diff --git a/version.lisp-expr b/version.lisp-expr index cb2afc2..bb6757a 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.18.19" +"0.9.18.20"