master: replace: make sure LENGTH is inlined
stassats via Sbcl-commits <[email protected]> Tue, 12 May 2026 13:19:38 +0000
| Newsgroups | gmane.lisp.steel-bank.cvs |
|---|---|
| Message-ID | <[email protected]> |
The branch "master" has been updated in SBCL:
via c2b343bb56443c6f97eb050b687bce34a136bb57 (commit)
from e0efcd56dd6b02cd106849993e582938f723d49b (commit)
- Log -----------------------------------------------------------------
commit c2b343bb56443c6f97eb050b687bce34a136bb57
Author: Stas Boukarev <[email protected]>
Date: Tue May 12 16:18:24 2026 +0300
replace: make sure LENGTH is inlined
At least when there are no :start/:end
---
src/code/seq.lisp | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/src/code/seq.lisp b/src/code/seq.lisp
index dcf03597e..35d02981e 100644
--- a/src/code/seq.lisp
+++ b/src/code/seq.lisp
@@ -917,19 +917,23 @@ many elements are copied."
(target-sequence target-sequence1)
(source-sequence source-sequence2)
(target-start start1)
- (source-start start2)
- (target-end (or end1 length1))
- (source-end (or end2 length2)))
+ (source-start start2))
(seq-dispatch-checking target-sequence
- (seq-dispatch-checking source-sequence
- (return-from replace (list-replace-from-list))
- (return-from replace (list-replace-from-vector))
- nil)
- (seq-dispatch-checking source-sequence
- (return-from replace (vector-replace-from-list))
- (return-from replace (vector-replace-from-vector))
- nil)
- t)
+ (let ((target-end (or end1 length1)))
+ (seq-dispatch-checking source-sequence
+ (return-from replace (let ((source-end (or end2 length2)))
+ (list-replace-from-list)))
+ (return-from replace (let ((source-end (or end2 length2)))
+ (list-replace-from-vector)))
+ nil))
+ (let ((target-end (or end1 length1)))
+ (seq-dispatch-checking source-sequence
+ (return-from replace (let ((source-end (or end2 length2)))
+ (vector-replace-from-list)))
+ (return-from replace (let ((source-end (or end2 length2)))
+ (vector-replace-from-vector)))
+ nil))
+ t)
;; If sequence1 is an extended-sequence, we know nothing about sequence2.
;; If sequence1 was a list or vector, then sequence2 is an extended-sequence
;; or not a sequence. Either way, check it.
-----------------------------------------------------------------------
hooks/post-receive
--
SBCL