summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-07-16 08:17:20 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-07-16 08:17:20 -0700
commit649c5caaeb83ad47a6239db5d76c3b3557fa639c (patch)
tree5e323af0d47ef6a2f53d4a194305ef24f644fe42 /share
parentd151853a6be4548c8a4d02b839b7dce689217a7d (diff)
downloadtxr-649c5caaeb83ad47a6239db5d76c3b3557fa639c.tar.gz
txr-649c5caaeb83ad47a6239db5d76c3b3557fa639c.tar.bz2
txr-649c5caaeb83ad47a6239db5d76c3b3557fa639c.zip
trace: allow format and * functions to be traced.
* share/txr/stdlib/trace.tl (sys:tr*, sys:trfm): New variables, holding the * and format functions. (sys:trace-enter, sys:trace-leave): Use format and * through the aliases, so we don't trigger infinite recursion if these are traced.
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/trace.tl7
1 files changed, 5 insertions, 2 deletions
diff --git a/share/txr/stdlib/trace.tl b/share/txr/stdlib/trace.tl
index 6aa80a46..6cc97914 100644
--- a/share/txr/stdlib/trace.tl
+++ b/share/txr/stdlib/trace.tl
@@ -3,11 +3,14 @@
(defvar sys:*trace-hash* (hash :equal-based))
(defvar sys:*trace-level* -1)
+(defvarl sys:tr* (fun *))
+(defvarl sys:trfm (fun format))
+
(defun sys:trace-enter (name args)
- (format *trace-output* "~*a(~s ~s\n" (* sys:*trace-level* 2) "" name args))
+ [sys:trfm *trace-output* "~*a(~s ~s\n" [sys:tr* sys:*trace-level* 2] "" name args])
(defun sys:trace-leave (name val)
- (format *trace-output* "~*a ~s)\n" (* sys:*trace-level* 2) "" val))
+ [sys:trfm *trace-output* "~*a ~s)\n" [sys:tr* sys:*trace-level* 2] "" val])
(defun sys:trace-canonicalize-name (name)
(if (and (consp name)