Handbook
Glossary
compute-next-uses ( cfg -- entries exits )
Vocabulary
compiler
.
cfg
.
register-allocation
.
chordal
.
spilling
.
next-use
Inputs
cfg
an
object
Outputs
entries
an
object
exits
an
object
Definition
USING:
assocs
compiler.cfg.loop-detection
compiler.cfg.rpo
kernel
sequences
;
IN:
compiler.cfg.register-allocation.chordal.spilling.next-use
::
compute-next-uses
( cfg -- entries exits )
cfg
needs-loops
cfg
reverse-post-order
:>
blocks blocks
[
H{
}
clone
]
H{
}
map>assoc
:>
entries blocks
[
H{
}
clone
]
H{
}
map>assoc
:>
exits
t
:>
changed!
[
changed
]
[
f
changed! blocks
<reversed>
[|
bb |
bb entries
successor-next-use
:>
after after bb
block-next-use
:>
before before bb entries
at
=
not
[
t
changed!
]
when
before bb entries
set-at
after bb exits
set-at
]
each
]
while
entries exits
;