Handbook
Glossary
gap-interval ( vreg range -- interval/f )
Vocabulary
compiler
.
cfg
.
register-allocation
.
backtracking
Inputs
vreg
an
object
range
an
object
Outputs
interval/f
an
object
Definition
USING:
accessors
arrays
assocs
compiler.cfg.linear-scan.allocation.state
compiler.cfg.linear-scan.live-intervals
compiler.cfg.registers
kernel
math
namespaces
sequences
vectors
;
IN:
compiler.cfg.register-allocation.backtracking
::
gap-interval
( vreg range -- interval/f )
range
gap-start
:>
start start range
second
<=
[
vreg
<live-interval>
start range
second
2array
1vector
>>ranges
vreg
rep-of
>>reload-rep
vreg
rep-of
>>spill-rep
range
second
dup
backtracking-point-blocks
get
at
block-to
backtracking-phase-mode?
get
[
1
+
]
when
=
[
]
[
vreg
dup
rep-of
assign-spill-slot
>>spill-to
]
if
start
backtracking-block-starts
get
key?
start
backtracking-point-blocks
get
at
predecessors>>
[
kill-block?>>
]
any?
not
and
[
]
[
vreg
dup
rep-of
assign-spill-slot
>>reload-from
]
if
]
[
f
]
if
;