diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-06-20 07:15:34 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-06-20 07:15:34 -0700 |
commit | 61a72064b0269ff3443fff3bfbe098de458605ca (patch) | |
tree | c1153ddc4ff04b35031aedf5ff5358a2511062da /lib.c | |
parent | e21a452a9c75074ab7eff33b70950aecf3f3c309 (diff) | |
download | txr-61a72064b0269ff3443fff3bfbe098de458605ca.tar.gz txr-61a72064b0269ff3443fff3bfbe098de458605ca.tar.bz2 txr-61a72064b0269ff3443fff3bfbe098de458605ca.zip |
Optimization: add missing tail updates to some list
collecting loops.
* lib.c (tuples_func, where, sel): Catch return value of
list_collect and update tail variable.
* match.c (do_txeval): Likewise.
* parser.y (expand_meta): Likewise for list_collect_nconc.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -1297,11 +1297,11 @@ static val tuples_func(val env, val lcons) val count; for (count = n; count != zero && seq; count = minus(count, one)) - list_collect(ptail, pop(&seq)); + ptail = list_collect(ptail, pop(&seq)); if (!missingp(fill)) for (; gt(count, zero); count = minus(count, one)) - list_collect(ptail, fill); + ptail = list_collect(ptail, fill); rplaca(env, seq); @@ -5484,7 +5484,7 @@ val where(val seq_in, val func) for (; seq; seq = cdr(seq), idx = plus(idx, one)) { val elt = car(seq); if (funcall1(func, elt)) - list_collect(ptail, idx); + ptail = list_collect(ptail, idx); } return out; @@ -5513,7 +5513,7 @@ val sel(val seq_in, val where_in) } while (lt(wh, idx)); if (eql(wh, idx)) - list_collect (ptail, car(seq)); + ptail = list_collect (ptail, car(seq)); } } break; @@ -5524,7 +5524,7 @@ val sel(val seq_in, val where_in) val wh = car(where); if (ge(wh, len)) break; - list_collect (ptail, ref(seq, car(where))); + ptail = list_collect (ptail, ref(seq, car(where))); } } break; |