diff options
author | dos-reis <gdr@axiomatics.org> | 2011-12-17 02:02:27 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-12-17 02:02:27 +0000 |
commit | e0238f5811dff267702803a1160282f92bc3fbdc (patch) | |
tree | 278073d139a2c291ecaddabe2baffc931bdf10ab /src/interp/g-opt.boot | |
parent | b32f6a05c34234a5f90d292e3b646810ffd2064b (diff) | |
download | open-axiom-e0238f5811dff267702803a1160282f92bc3fbdc.tar.gz |
* interp/compiler.boot (finishListCollect): New.
(compRepeatOrCollect): Use it.
* interp/g-opt.boot (optCollectVector): Likewise.
* interp/lisp-backend.boot (expandCollect): Likewise.
Diffstat (limited to 'src/interp/g-opt.boot')
-rw-r--r-- | src/interp/g-opt.boot | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot index 2dc0dd72..c93204bc 100644 --- a/src/interp/g-opt.boot +++ b/src/interp/g-opt.boot @@ -433,7 +433,8 @@ subrname u == nil changeLeaveToExit(s,g) == - s isnt [.,:.] or s.op in '(QUOTE %seq REPEAT COLLECT %collect %repeat) => nil + atomic? s => nil + s.op in '(QUOTE %seq REPEAT COLLECT %collect %repeat) => nil s is ['%leave, =g,:u] => (s.first := '%exit; s.rest := u) changeLeaveToExit(first s,g) changeLeaveToExit(rest s,g) @@ -789,7 +790,8 @@ optCollectVector form == systemErrorHere ["optCollectVector", iter] -- if we draw from a list, then just build a list and convert to vector. fromList => - ["homogeneousListToVector",["getVMType",eltType], ['%collect,:iters,body]] + ["homogeneousListToVector",["getVMType",eltType], + finishListCollect(iters,body)] vecSize = nil => systemErrorHere ["optCollectVector",form] -- get the actual size of the vector. vecSize := |