summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-01-07 01:51:02 -0800
committerKaz Kylheku <kaz@kylheku.com>2018-01-07 01:51:02 -0800
commit2282c1bc60a9b37ca8b7fcf843a62413e328e324 (patch)
tree75675a614945779c8805c1dc84928961b5a8ef55 /lib.c
parent3cdac5ead76c16bbf68be92a086c0b9ab72ad3b9 (diff)
downloadtxr-2282c1bc60a9b37ca8b7fcf843a62413e328e324.tar.gz
txr-2282c1bc60a9b37ca8b7fcf843a62413e328e324.tar.bz2
txr-2282c1bc60a9b37ca8b7fcf843a62413e328e324.zip
tail: reduce calls to cdr.
* lib.c (tail): Don't call cdr on the same cell twice in the loop body. tail is used in list_collect and friends, which are used all over the place.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib.c b/lib.c
index 48bf1807..a318aecc 100644
--- a/lib.c
+++ b/lib.c
@@ -655,8 +655,9 @@ val listref(val list, val ind)
loc tail(val cons)
{
- while (consp(cdr(cons)))
- cons = cdr(cons);
+ val d;
+ for (d = cdr(cons); consp(d); d = cdr(d))
+ cons = d;
return cdr_l(cons);
}