aboutsummaryrefslogtreecommitdiff
path: root/src/interp/g-opt.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-12-17 02:02:27 +0000
committerdos-reis <gdr@axiomatics.org>2011-12-17 02:02:27 +0000
commite0238f5811dff267702803a1160282f92bc3fbdc (patch)
tree278073d139a2c291ecaddabe2baffc931bdf10ab /src/interp/g-opt.boot
parentb32f6a05c34234a5f90d292e3b646810ffd2064b (diff)
downloadopen-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.boot6
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 :=