diff options
author | dos-reis <gdr@axiomatics.org> | 2010-06-10 15:15:28 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-06-10 15:15:28 +0000 |
commit | 35102fea22aa54cdc3dff3e9faea8b1c58b93aa2 (patch) | |
tree | e83de1b3592d7c04f46bb3936a0546f4e4828a1d /src/interp/i-spec2.boot | |
parent | b28cdd9c3c0bbeba4f624cbfc649dc4e47b699a8 (diff) | |
download | open-axiom-35102fea22aa54cdc3dff3e9faea8b1c58b93aa2.tar.gz |
* interp/compiler.boot (freeVarUsage): Handle %when too.
(compLogicalNot): Generate %not form.
(satisfies): Use %bind.
(compMatch): Likewise.
(compReduce1): Generate %loop directly instead of %reduce.
* interp/g-opt.boot (changeThrowToExit): Don't check for %reduce.
* interp/g-util.boot (expandRepeat): Remove.
(expandReduce): Likewise.
Diffstat (limited to 'src/interp/i-spec2.boot')
-rw-r--r-- | src/interp/i-spec2.boot | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/interp/i-spec2.boot b/src/interp/i-spec2.boot index a77b92e1..c67ccb7e 100644 --- a/src/interp/i-spec2.boot +++ b/src/interp/i-spec2.boot @@ -953,7 +953,7 @@ evalREPEAT(op,[:itrl,body],repeatMode) == bodyCode := getArgValue(body,bodyMode) if $iterateCount > 0 then bodyCode := ["CATCH",$repeatBodyLabel,bodyCode] - code := ["%repeat",:[evalLoopIter itr for itr in itrl], bodyCode] + code := ['%loop,:[evalLoopIter itr for itr in itrl],bodyCode,voidValue()] code := timedOptimization code if $breakCount > 0 then code := ['CATCH,$repeatLabel,code] val := @@ -975,9 +975,9 @@ interpREPEAT(op,itrl,body,repeatMode) == $indexTypes: local := NIL code := -- we must insert a CATCH for the iterate clause - ["%repeat",:[interpIter itr for itr in itrl], + ['%loop,:[interpIter itr for itr in itrl], ["CATCH",$repeatBodyLabel,interpLoop(body,$indexVars, - $indexTypes,nil)]] + $indexTypes,nil)],voidValue()] SPADCATCH(eval $repeatLabel,timedEVALFUN code) val:= objNewWrap(voidValue(),repeatMode) putValue(op,val) |