summaryrefslogtreecommitdiffstats
path: root/stdlib/optimize.tl
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-09-29 23:15:45 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-09-29 23:15:45 -0700
commitd88b3284479d562e819939bb6d7116678b080628 (patch)
tree9fe6af52bee4ecea8a1e3976c241c40014e869c5 /stdlib/optimize.tl
parent68f856fc1fe2f662e3771bec32fb447304c56818 (diff)
downloadtxr-d88b3284479d562e819939bb6d7116678b080628.tar.gz
txr-d88b3284479d562e819939bb6d7116678b080628.tar.bz2
txr-d88b3284479d562e819939bb6d7116678b080628.zip
compiler: improvement in next-block linking.
* stdlib/optimize.tl (basic-blocks link-graph): Do not search the entire list for a block's successor. Iterate over the cdr of the list in parallel, so that the next block is directly available at each iteration.
Diffstat (limited to 'stdlib/optimize.tl')
-rw-r--r--stdlib/optimize.tl6
1 files changed, 3 insertions, 3 deletions
diff --git a/stdlib/optimize.tl b/stdlib/optimize.tl
index 5f81bc10..628a5317 100644
--- a/stdlib/optimize.tl
+++ b/stdlib/optimize.tl
@@ -123,12 +123,12 @@
(defmeth basic-blocks link-graph (bb)
(set bb.root (car bb.list))
- (each ((bl bb.list))
+ (each* ((bl bb.list)
+ (nxbl (append (cdr bl) '(nil))))
(let* ((code bl.insns)
(tail (last code))
(linsn (car tail))
- (link-next t)
- (nxbl (cadr (memq bl bb.list))))
+ (link-next t))
(set bl.next nxbl)
(match-case linsn
((jmp @jlabel)