Handbook
Glossary
greedy-allocate-intervals ( intervals/sync-points registers -- intervals )
Vocabulary
compiler
.
cfg
.
register-allocation
.
greedy
Inputs
intervals/sync-points
an
object
registers
an
object
Outputs
intervals
an
object
Definition
USING:
arrays
assocs
compiler.cfg.linear-scan.allocation.state
compiler.cfg.register-allocation.occupancy
hashtables.identity
heaps
kernel
namespaces
sequences
;
IN:
compiler.cfg.register-allocation.greedy
::
greedy-allocate-intervals
( intervals/sync-points registers -- intervals )
registers
greedy-registers
set
H{
}
clone
spill-slots
set
H{
}
clone
greedy-statistics
set
H{
}
clone
greedy-unions
set
H{
}
clone
greedy-occupancies
set
32
<identity-hashtable>
greedy-costs
set
32
<identity-hashtable>
greedy-progress-map
set
0
greedy-cascade-counter
set
H{
}
clone
greedy-vreg-unions
set
registers
[|
class regs |
regs
[|
reg |
V{
}
clone
class reg
2array
greedy-unions
get
set-at
<register-occupancy>
class reg
2array
greedy-occupancies
get
set-at
]
each
]
assoc-each
<max-heap>
greedy-queue
set
intervals/sync-points
prepare-greedy-intervals
[
greedy-enqueue
]
each
[
greedy-queue
get
heap-empty?
]
[
greedy-queue
get
heap-pop
drop
greedy-allocate-one
]
until
greedy-unions
get
values
concat
;