summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/txr/stdlib/compiler.tl8
1 files changed, 5 insertions, 3 deletions
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl
index 47abbeab..47f32152 100644
--- a/share/txr/stdlib/compiler.tl
+++ b/share/txr/stdlib/compiler.tl
@@ -299,10 +299,12 @@
^((mov ,vbind.loc ,ifrg.oreg)))
,lskip)))))
(benv (if specials (new env up nenv co me) nenv))
- (bfrag me.(comp-progn oreg benv body))
- (boreg (if env.(out-of-scope bfrag.oreg) oreg bfrag.oreg))
+ (btreg me.(alloc-treg))
+ (bfrag me.(comp-progn btreg benv body))
+ (boreg (if env.(out-of-scope bfrag.oreg) btreg bfrag.oreg))
(lskip (gensym "l-"))
(frsize nenv.v-cntr))
+ me.(free-treg btreg)
(new (frag oreg
^((close ,oreg ,frsize ,lskip ,nfixed ,nreq
,(if rest-par t nil)
@@ -323,7 +325,7 @@
^(bindv ,sub-bind.loc ,dreg)))))
,*bfrag.code
,*(if specials
- ^((end ,oreg)))
+ ^((end ,boreg)))
,*(if (nequal boreg bfrag.oreg)
^((mov ,boreg ,bfrag.oreg)))
(end ,boreg)