Update of /project/movitz/cvsroot/movitz/losp/x86-pc In directory clnet:/tmp/cvs-serv1496
Modified Files: debugger.lisp Log Message: Tweak backtrace to recognize an apply-frame's numargs.
--- /project/movitz/cvsroot/movitz/losp/x86-pc/debugger.lisp 2005/08/31 22:34:58 1.41 +++ /project/movitz/cvsroot/movitz/losp/x86-pc/debugger.lisp 2006/03/21 20:13:12 1.42 @@ -10,7 +10,7 @@ ;;;; Author: Frode Vatvedt Fjeld frodef@acm.org ;;;; Created at: Fri Nov 22 10:09:18 2002 ;;;; -;;;; $Id: debugger.lisp,v 1.41 2005/08/31 22:34:58 ffjeld Exp $ +;;;; $Id: debugger.lisp,v 1.42 2006/03/21 20:13:12 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -49,7 +49,7 @@
(defvar *backtrace-do-conflate* t) (defvar *backtrace-length* 14) -(defvar *backtrace-max-args* 10) +(defvar *backtrace-max-args* 16) (defvar *backtrace-stack-frame-barrier* nil) (defvar *backtrace-do-fresh-lines* t) (defvar *backtrace-print-length* 3) @@ -158,6 +158,10 @@ ((and (= #x33 opcode0) (= #xc9 opcode1)) ;; XORL :ECX :ECX 0) + ((eq funobj #'apply) + (- (stack-frame-uplink stack frame) + frame + 2)) (t ;; now we should search further for where ecx may be set.. (format *debug-io* "{no ECX at ~D in ~S, opcode #x~X #x~X}" call-site funobj opcode0 opcode1) @@ -341,7 +345,7 @@ (#x52 (:set-result (-2)))))))
(defun funobj-stack-frame-map (funobj &optional numargs) - "Try funobj's stack-frame map, which is a list that says + "Try to find funobj's stack-frame map, which is a list that says what the stack-frame contains at that position. Some funobjs' map depend on the number of arguments presented to it, so numargs can be provided for those cases."