Update of /cvsroot/sbcl/sbcl/src/code
In directory sc8-pr-cvs1:/tmp/cvs-serv30619/src/code
Modified Files:
ntrace.lisp
Log Message:
0.8.6.40:
merged patch from Marco Baringer (sbcl-devel 2003-12-02) to
allow (TRACE "MY-PACKAGE-NAME")
collapsed IF clause at the end of EXPAND-TRACE, since SBCL now
always has a compiler and shouldn't need to worry about
supporting interpreter-only environments
Index: ntrace.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/ntrace.lisp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- ntrace.lisp 12 Dec 2003 04:35:23 -0000 1.30
+++ ntrace.lisp 18 Dec 2003 01:05:19 -0000 1.31
@@ -461,8 +461,7 @@
current))
;;; Compute the expansion of TRACE in the non-trivial case (arguments
-;;; specified.) If there are no :FUNCTION specs, then don't use a LET.
-;;; This allows TRACE to be used without the full interpreter.
+;;; specified.)
(defun expand-trace (specs)
(collect ((binds)
(forms))
@@ -480,13 +479,20 @@
((and (keywordp name)
(not (or (fboundp name) (macro-function name))))
(error "unknown TRACE option: ~S" name))
+ ((stringp name)
+ (let ((package (find-undeleted-package-or-lose name)))
+ (do-all-symbols (symbol (find-package name))
+ (when (and (eql package (symbol-package symbol))
+ (fboundp symbol)
+ (not (macro-function symbol))
+ (not (special-operator-p symbol)))
+ (forms `(trace-1 ',symbol ',options))))))
(t
(forms `(trace-1 ',name ',options))))
(setq current (parse-trace-options current options)))))
-
- (if (binds)
- `(let ,(binds) (list ,@(forms)))
- `(list ,@(forms)))))
+
+ `(let ,(binds)
+ (list ,@(forms)))))
(defun %list-traced-funs ()
(loop for x being each hash-value in *traced-funs*
@@ -498,7 +504,9 @@
TRACE is a debugging tool that provides information when specified functions
are called. In its simplest form:
(TRACE NAME-1 NAME-2 ...)
- (The NAMEs are not evaluated.)
+ The NAMEs are not evaluated. Each may be a symbol, denoting an
+ individual function, or a string, denoting all functions fbound
+ to symbols whose home package is the package with the given name.
Options allow modification of the default behavior. Each option is a pair
of an option keyword and a value form. Global options are specified before
@@ -605,6 +613,11 @@
#+sb-doc
"Remove tracing from the specified functions. With no args, untrace all
functions."
+ ;; KLUDGE: Since we now allow (TRACE FOO BAR "SB-EXT") to trace not
+ ;; only #'FOO and #'BAR but also all the functions in #<PACKAGE "SB-EXT">,
+ ;; it would be probably be best for consistency to do something similar
+ ;; with UNTRACE. (But I leave it to someone who uses and cares about
+ ;; UNTRACE-with-args more often than I do.) -- WHN 2003-12-17
(if specs
(collect ((res))
(let ((current specs))
|