diff options
author | dos-reis <gdr@axiomatics.org> | 2011-12-15 22:59:18 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-12-15 22:59:18 +0000 |
commit | b32f6a05c34234a5f90d292e3b646810ffd2064b (patch) | |
tree | 7256a9d629e15668f9ca48d53f3ed7dca7e12831 /src/interp/g-opt.boot | |
parent | c2527210cb847af8e5b1c9ff4fcbd52342195e99 (diff) | |
download | open-axiom-b32f6a05c34234a5f90d292e3b646810ffd2064b.tar.gz |
* interp/g-util.boot (prefixWalk!): New.
* interp/g-opt.boot (cleanLoop!): Rename from removeLoopExitTag!.
Adjust caller. Rewrite as a prefix walk.
Diffstat (limited to 'src/interp/g-opt.boot')
-rw-r--r-- | src/interp/g-opt.boot | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot index 37087c9b..2dc0dd72 100644 --- a/src/interp/g-opt.boot +++ b/src/interp/g-opt.boot @@ -345,10 +345,10 @@ removeLeave! x == walkWith!(x,function f) where x is ['%leave,.,y] and y is ['%return,:.] => resetTo(x,y) x -removeLoopExitTag! x == walkWith!(x,function f) where +cleanLoop! x == prefixWalk!(x,function f) where f x == x is ['%scope,tag,['%repeat,:itl,body,val]] => - resetTo(x,['%repeat,:itl,g(body,tag),g(val,tag)]) + resetTo(x,f ['%repeat,:itl,g(body,tag),g(val,tag)]) x g(x,tag) == atomic? x => x @@ -364,7 +364,7 @@ removeLoopExitTag! x == walkWith!(x,function f) where ++ a lower intermediate form, applying several transformations ++ generaly intended to improve quality and efficiency. optimize! x == - x := spliceSeq! packWhen! transformIF! removeLeave! removeLoopExitTag! x + x := spliceSeq! packWhen! transformIF! removeLeave! cleanLoop! x changeVariableDefinitionToStore(x,nil) simplifyVMForm cancelScopeLeave! spliceSeq! packWhen! inlineLocals! groupTranscients! cancelScopeLeave! removeJunk! reduceXLAM! x |