Handbook
Glossary
region-network-edges ( blocks -- edges )
Vocabulary
compiler
.
cfg
.
register-allocation
.
greedy
Inputs
blocks
an
object
Outputs
edges
an
object
Definition
USING:
accessors
arrays
assocs
compiler.cfg.linear-scan.live-intervals
compiler.cfg.linear-scan.ranges
hashtables.identity
kernel
math.order
sequences
;
IN:
compiler.cfg.register-allocation.greedy
::
region-network-edges
( blocks -- edges )
32
<identity-hashtable>
:>
indices blocks
[|
node i | i node
block>>
indices
set-at
]
each-index
V{
}
clone
:>
edges blocks
[|
node i |
node
block>>
:>
bb bb
block-to
node
ranges>>
ranges-cover?
[
bb
successors>>
[|
successor |
successor indices
at
:>
j j
[
j blocks
nth
:>
target successor
block-from
target
ranges>>
ranges-cover?
[
i j node
frequency>>
target
frequency>>
min
3array
edges
push
]
when
]
when
]
each
]
when
]
each-index
edges
;