diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-03-23 22:05:45 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-03-23 22:49:47 +0100 |
commit | f8f8986e4a5fad520e0f9e5e150b45178c0a7ed4 (patch) | |
tree | e367c9f7d64b2fc07b3eabb715ca1189b270428c | |
parent | 6111b86bdcc0dd4c8821ccf70fecc5dbd8590830 (diff) | |
download | guile-f8f8986e4a5fad520e0f9e5e150b45178c0a7ed4.tar.gz |
'sort-labels-locally' uses a transient intset.
* module/language/cps/renumber.scm (sort-labels-locally): Use a
transient intset.
-rw-r--r-- | module/language/cps/renumber.scm | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/module/language/cps/renumber.scm b/module/language/cps/renumber.scm index 7200a5fcf..19080c502 100644 --- a/module/language/cps/renumber.scm +++ b/module/language/cps/renumber.scm @@ -1,6 +1,6 @@ ;;; Continuation-passing style (CPS) intermediate language (IL) -;; Copyright (C) 2013-2019 Free Software Foundation, Inc. +;; Copyright (C) 2013-2020 Free Software Foundation, Inc. ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -80,8 +80,8 @@ (let-values (((order visited) (visit k0 order visited))) (visit k1 order visited))) (if (intset-ref visited k) - (values order visited) - (let ((visited (intset-add visited k))) + (values order (persistent-intset visited)) + (let ((visited (intset-add! visited k))) (call-with-values (lambda () (match (intmap-ref conts k) @@ -109,7 +109,7 @@ (($ $ktail) (values order visited)))) (lambda (order visited) ;; Add k to the reverse post-order. - (values (cons k order) visited)))))))) + (values (cons k order) (persistent-intset visited))))))))) (define (compute-renaming conts kfun) ;; labels := old -> new |