aboutsummaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/analyzer.zc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/analyzer.zc b/src/compiler/analyzer.zc
index 8ceaf09..42cb7b5 100644
--- a/src/compiler/analyzer.zc
+++ b/src/compiler/analyzer.zc
@@ -1004,7 +1004,7 @@ int freevar(int i) {
if (o3on && fchk && ldroppable(i)) cerrn(i, "has drop and can't end inside an o3 region");
if (local_captured && local_captured[i]) { lit(0); laddr(lslot[i]); op(O_ST); return 0; }
vaddr(i); op(O_LD);
- if (lleaf[i] && !o3on && !dry && lookup(s_recycle_leaf) >= 0) {
+ if (lleaf[i] && !dry && lookup(s_recycle_leaf) >= 0) { // o3 too: new_k stamps the type there as well
lit(lleaf[i]);
lit(szclass(lnsz[i]));
callname(s_recycle_leaf);
@@ -1434,7 +1434,7 @@ int reassign_free(int i, int rc, int bor) {
// freevar without its clearing store: the new value is stored next, through
// the address taken before the right side (a captured local's slot holds its cell)
vaddr(i); op(O_LD);
- if (lleaf[i] && !o3on && !dry && lookup(s_recycle_leaf) >= 0) { lit(lleaf[i]); lit(szclass(lnsz[i])); callname(s_recycle_leaf); }
+ if (lleaf[i] && !dry && lookup(s_recycle_leaf) >= 0) { lit(lleaf[i]); lit(szclass(lnsz[i])); callname(s_recycle_leaf); }
else callname(s_recycle);
op(O_DROP);
end_owner(i);