X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Fntrace.lisp;h=cdf16608c8b0bdbd2ea2332f246fbadb94f4ba4e;hb=aa61c7571b33b86981301f34d3acdb66666f53a3;hp=1b0540fd02568b2e5007a4d51ea2a7c58cd9f474;hpb=be9eb6c67b5f43a095c3de17bea945c309d662e4;p=sbcl.git diff --git a/src/code/ntrace.lisp b/src/code/ntrace.lisp index 1b0540f..cdf1660 100644 --- a/src/code/ntrace.lisp +++ b/src/code/ntrace.lisp @@ -125,12 +125,12 @@ (values (fdefinition x) t)))) (function x) (t (values (fdefinition x) t))) - (case (sb-kernel:get-type res) - (#.sb-vm:closure-header-type - (values (sb-kernel:%closure-function res) + (case (sb-kernel:widetag-of res) + (#.sb-vm:closure-header-widetag + (values (sb-kernel:%closure-fun res) named-p :compiled-closure)) - (#.sb-vm:funcallable-instance-header-type + (#.sb-vm:funcallable-instance-header-widetag (values res named-p :funcallable-instance)) (t (values res named-p :compiled))))) @@ -188,7 +188,7 @@ *trace-indentation-step*) depth))) -;;; Return true if one of the Names appears on the stack below Frame. +;;; Return true if any of the NAMES appears on the stack below FRAME. (defun trace-wherein-p (frame names) (do ((frame (sb-di:frame-down frame) (sb-di:frame-down frame))) ((not frame) nil) @@ -197,14 +197,14 @@ :test #'equal) (return t)))) -;;; Handle print and print-after options. +;;; Handle PRINT and PRINT-AFTER options. (defun trace-print (frame forms) (dolist (ele forms) (fresh-line) (print-trace-indentation) (format t "~S = ~S" (car ele) (funcall (cdr ele) frame)))) -;;; Test a break option, and break if true. +;;; Test a BREAK option, and break if true. (defun trace-maybe-break (info break where frame) (when (and break (funcall (cdr break) frame)) (sb-di:flush-frames-above frame) @@ -213,9 +213,9 @@ where (trace-info-what info))))) -;;; This function discards any invalid cookies on our simulated stack. -;;; Encapsulated entries are always valid, since we bind -;;; *TRACED-ENTRIES* in the encapsulation. +;;; Discard any invalid cookies on our simulated stack. Encapsulated +;;; entries are always valid, since we bind *TRACED-ENTRIES* in the +;;; encapsulation. (defun discard-invalid-entries (frame) (loop (when (or (null *traced-entries*) @@ -302,8 +302,8 @@ frame))))) ;;; This function is called by the trace encapsulation. It calls the -;;; breakpoint hook functions with NIL for the breakpoint and cookie, which -;;; we have cleverly contrived to work for our hook functions. +;;; breakpoint hook functions with NIL for the breakpoint and cookie, +;;; which we have cleverly contrived to work for our hook functions. (defun trace-call (info) (multiple-value-bind (start cookie) (trace-start-breakpoint-fun info) (let ((frame (sb-di:frame-down (sb-di:top-frame))))