* Single-stepping tests now pass on ppc/darwin, at least.
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.
;;; 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)
;; 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
(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))
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
,@(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))
(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
(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)
;;; 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"