diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-04-04 06:53:29 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-04-04 06:53:29 -0700 |
commit | 0cc6af7235debd8c4d710d806ffd3a6fb40ebeb4 (patch) | |
tree | e27c20b998d03cba6390c4e24fe4122eebc1fe78 | |
parent | b856f42249c2b0d45910c519c5e4c656a4c4ec9f (diff) | |
download | txr-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.tl | 6 |
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")) |