Handbook
Glossary
productive-gap? ( range fragments -- ? )
Vocabulary
compiler
.
cfg
.
register-allocation
.
backtracking
Inputs
range
an
object
fragments
an
object
Outputs
?
an
object
Definition
USING:
assocs
compiler.cfg.linear-scan.live-intervals
compiler.cfg.register-allocation.ssa.phases
kernel
math
namespaces
sequences
;
IN:
compiler.cfg.register-allocation.backtracking
::
productive-gap?
( range fragments -- ? )
range
gap-start
:>
start range
second
:>
end start end
>
[
t
]
[
start
backtracking-point-blocks
get
at
:>
bb start bb
backtracking-phase-mode?
get
[
phase-block-from
]
[
block-from
]
if
>
bb end
backtracking-point-blocks
get
at
eq?
and
end bb
block-to
backtracking-phase-mode?
get
[
1
+
]
when
<
and
[
fragments
[
live-interval-end
1
+
start
=
]
any?
fragments
[
live-interval-start
end 1
+
=
]
any?
and
]
[
t
]
if
]
if
;