From ac9fc4035f8801ca0572ea2e47fbfd4171edbcbb Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 18 Jul 2012 12:31:53 -0700 Subject: [PATCH] sequences: faster last / set-last. --- core/sequences/sequences.factor | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 04cec9531b..08a475001a 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -688,9 +688,13 @@ PRIVATE> : append! ( seq1 seq2 -- seq1 ) over push-all ; inline -: last ( seq -- elt ) [ length 1 - ] [ nth ] bi ; +: last ( seq -- elt ) + [ length 1 - ] keep + over 0 < [ bounds-error ] [ nth-unsafe ] if ; inline -: set-last ( elt seq -- ) [ length 1 - ] keep set-nth ; +: set-last ( elt seq -- ) + [ length 1 - ] keep + over 0 < [ bounds-error ] [ set-nth-unsafe ] if ; inline : pop* ( seq -- ) [ length 1 - ] [ shorten ] bi ;