0.9.18.20: correct step-frame logic on non-x86oids
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 1 Nov 2006 13:00:40 +0000 (13:00 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 1 Nov 2006 13:00:40 +0000 (13:00 +0000)
 * Single-stepping tests now pass on ppc/darwin, at least.

NEWS
src/code/debug-int.lisp
src/code/step.lisp
src/compiler/ppc/call.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 633e02e..bc80266 100644 (file)
--- 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.
index 3145358..532963e 100644 (file)
@@ -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
index 9d63d34..66a8313 100644 (file)
       (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
index 038a510..5f21eeb 100644 (file)
@@ -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)
index cb2afc2..bb6757a 100644 (file)
@@ -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"