summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-09-10 20:10:08 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-09-10 20:10:08 -0700
commit90cfbd9f4f0da650db4be458b01a8c44bee08047 (patch)
tree728a6aa0c6f22bbe3bb7484564f9123325a19efe
parentd3d92b3c4e24fb296b124ba18e01442783da7fa7 (diff)
downloadtxr-90cfbd9f4f0da650db4be458b01a8c44bee08047.tar.gz
txr-90cfbd9f4f0da650db4be458b01a8c44bee08047.tar.bz2
txr-90cfbd9f4f0da650db4be458b01a8c44bee08047.zip
list-builder: remove wasteful slot accesses.
* share/txr/stdlib/build.tl (list-builder add, list-builder pend, list-builder pend): Refer to previously cached variable holding self.head or self.tail, instead of re-accessing the slot.
-rw-r--r--share/txr/stdlib/build.tl22
1 files changed, 11 insertions, 11 deletions
diff --git a/share/txr/stdlib/build.tl b/share/txr/stdlib/build.tl
index 76be9f55..91a39223 100644
--- a/share/txr/stdlib/build.tl
+++ b/share/txr/stdlib/build.tl
@@ -33,10 +33,10 @@
(:method add (self . items)
(let ((st self.tail))
- (rplacd st (append (cdr st) nil)))
- (let ((tl (last self.tail)))
- (usr:rplacd tl (append (cdr tl) items))
- (set self.tail tl))
+ (rplacd st (append (cdr st) nil))
+ (let ((tl (last st)))
+ (usr:rplacd tl (append (cdr tl) items))
+ (set self.tail tl)))
nil)
(:method add* (self . items)
@@ -47,19 +47,19 @@
(:method pend (self . lists)
(when lists
(let ((st self.tail))
- (rplacd st (append (cdr st) nil)))
- (let* ((tl (last self.tail))
- (cp (tailp tl (car (last lists))))
- (nl [apply append lists]))
- (usr:rplacd tl (append (cdr tl) (if cp (copy-list nl) nl)))
- (set self.tail tl))
+ (rplacd st (append (cdr st) nil))
+ (let* ((tl (last st))
+ (cp (tailp tl (car (last lists))))
+ (nl [apply append lists]))
+ (usr:rplacd tl (append (cdr tl) (if cp (copy-list nl) nl)))
+ (set self.tail tl)))
nil))
(:method pend* (self . lists)
(let* ((h self.head)
(pf [apply append (append lists (list (cdr h)))]))
(usr:rplacd h pf)
- (set self.tail self.head))
+ (set self.tail h))
nil)
(:method ncon (self . lists)