diff options
-rw-r--r-- | module/language/cps/slot-allocation.scm | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/module/language/cps/slot-allocation.scm b/module/language/cps/slot-allocation.scm index 2d95f4262..f623aac75 100644 --- a/module/language/cps/slot-allocation.scm +++ b/module/language/cps/slot-allocation.scm @@ -1,6 +1,6 @@ ;; Continuation-passing style (CPS) intermediate language (IL) -;; Copyright (C) 2013, 2014, 2015 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 @@ -551,10 +551,18 @@ are comparable with eqv?. A tmp slot may be used." tmp) (loop to-move b (cons s+d moved) last-source)))))))))) -(define (compute-shuffles cps slots call-allocs live-in) - (define (add-live-slot slot live-slots) - (logior live-slots (ash 1 slot))) +(define-inlinable (add-live-slot slot live-slots) + (logior live-slots (ash 1 slot))) + +(define-inlinable (kill-dead-slot slot live-slots) + (logand live-slots (lognot (ash 1 slot)))) +(define-inlinable (compute-slot live-slots hint) + (if (and hint (not (logbit? hint live-slots))) + hint + (find-first-zero live-slots))) + +(define (compute-shuffles cps slots call-allocs live-in) (define (get-cont label) (intmap-ref cps label)) @@ -728,17 +736,6 @@ are comparable with eqv?. A tmp slot may be used." (_ slots))) cps empty-intmap)) -(define-inlinable (add-live-slot slot live-slots) - (logior live-slots (ash 1 slot))) - -(define-inlinable (kill-dead-slot slot live-slots) - (logand live-slots (lognot (ash 1 slot)))) - -(define-inlinable (compute-slot live-slots hint) - (if (and hint (not (logbit? hint live-slots))) - hint - (find-first-zero live-slots))) - (define (allocate-lazy-vars cps slots call-allocs live-in lazy) (define (compute-live-slots slots label) (intset-fold (lambda (var live) |