summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-04-04 06:53:29 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-04-04 06:53:29 -0700
commit0cc6af7235debd8c4d710d806ffd3a6fb40ebeb4 (patch)
treee27c20b998d03cba6390c4e24fe4122eebc1fe78
parentb856f42249c2b0d45910c519c5e4c656a4c4ec9f (diff)
downloadtxr-0cc6af7235debd8c4d710d806ffd3a6fb40ebeb4.tar.gz
txr-0cc6af7235debd8c4d710d806ffd3a6fb40ebeb4.tar.bz2
txr-0cc6af7235debd8c4d710d806ffd3a6fb40ebeb4.zip
compiler: don't add compile-time gensym into env.
* share/txr/stdlib/compiler.tl (compiler comp-tree-case): The block name isn't a lexical variable; do not add it to nenv via extend-var. Just bind to gensym directly and insert where needed. This reduces the run-time frame size by one entry.
-rw-r--r--share/txr/stdlib/compiler.tl6
1 files changed, 3 insertions, 3 deletions
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl
index a4721448..a5fd9e0d 100644
--- a/share/txr/stdlib/compiler.tl
+++ b/share/txr/stdlib/compiler.tl
@@ -945,7 +945,7 @@
(nenv (new env up env co me))
(obj-immut-var (cdar nenv.(extend-var (gensym))))
(obj-var (cdar nenv.(extend-var (gensym))))
- (err-blk (cdar nenv.(extend-var (gensym))))
+ (err-blk (gensym))
(lout (gensym "l"))
(ctx-form ^',form)
(err-form ^',(rlcp ^(,(car form)) form))
@@ -954,13 +954,13 @@
(cfrags (collect-each ((c cases)
(i (range 1)))
(mac-param-bind form (params . body) c
- (let* ((src (expand ^(block ,err-blk.sym
+ (let* ((src (expand ^(block ,err-blk
(set ,obj-var.sym
,obj-immut-var.sym)
,(expand-bind-mac-params
ctx-form err-form
params nil obj-var.sym :
- err-blk.sym
+ err-blk
body))))
(lerrtest (gensym "l"))
(lnext (gensym "l"))