aboutsummaryrefslogtreecommitdiff
path: root/src/interp/g-opt.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-06-09 16:00:43 +0000
committerdos-reis <gdr@axiomatics.org>2010-06-09 16:00:43 +0000
commit050ebc37a782f65ea7d305d32d79f1427057787f (patch)
treed2227523738cb9819c4f694089209d9eb65b39ec /src/interp/g-opt.boot
parent4e8ea57821d8deaccd9ffb47ff7a4a7f505880c5 (diff)
downloadopen-axiom-050ebc37a782f65ea7d305d32d79f1427057787f.tar.gz
* interp/compiler.boot (canReturn): Handle %when and %bind.
(compMatchAlternative): Generate %bind form. (compMatch): Likewise. (compReduce1): Rewrite. (getIdentity): Tidy. * interp/g-opt.boot (changeThrowToExit): HAndle %reduce. (varIsAssigned): %store is side-effectful. * interp/g-util.boot (expandReduce): New. Expand %reduce forms. * interp/i-map.boot (getUserIdentifiersIn): Handle %reduce. (findLocalVars1): Likewise. * interp/i-spec1.boot (checkForFreeVariables): Likewise.
Diffstat (limited to 'src/interp/g-opt.boot')
-rw-r--r--src/interp/g-opt.boot6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot
index 3557f554..dae16cde 100644
--- a/src/interp/g-opt.boot
+++ b/src/interp/g-opt.boot
@@ -124,7 +124,7 @@ subrname u ==
nil
changeThrowToExit(s,g) ==
- atom s or first s in '(QUOTE SEQ REPEAT COLLECT %collect %repeat) => nil
+ atom s or first s in '(QUOTE SEQ REPEAT COLLECT %collect %repeat %reduce) => nil
s is ["THROW", =g,:u] => (s.first := "EXIT"; s.rest := u)
changeThrowToExit(first s,g)
changeThrowToExit(rest s,g)
@@ -480,7 +480,7 @@ findVMFreeVars form ==
++ in `form'.
varIsAssigned(var,form) ==
isAtomicForm form => false
- form is [op,=var,:.] and op in '(%LET LETT SETQ) => true
+ form is [op,=var,:.] and op in '(%LET LETT SETQ %store) => true
or/[varIsAssigned(var,f) for f in form]
++ Subroutine of optLET. Return true if the variable `var' locally
@@ -621,7 +621,7 @@ for x in '( (%Call optCall) _
(SEQ optSEQ)_
(LET optLET)_
(LET_* optLET_*)_
- (%Bind optBind)_
+ (%bind optBind)_
(LIST optLIST)_
(MINUS optMINUS)_
(QSMINUS optQSMINUS)_