Handbook
Glossary
prepare-backtracking-moves ( intervals -- )
Vocabulary
compiler
.
cfg
.
register-allocation
.
backtracking
Inputs
intervals
an
object
Outputs
None
Definition
USING:
accessors
assocs
compiler.cfg.linear-scan.live-intervals
compiler.cfg.linear-scan.resolve
kernel
make
namespaces
sequences
;
IN:
compiler.cfg.register-allocation.backtracking
::
prepare-backtracking-moves
( intervals -- )
H{
}
clone
:>
points intervals
[
reload-from>>
backtracking-register-home?
]
filter
[
live-interval-start
t
swap
points
set-at
]
each
H{
}
clone
:>
groups intervals
[|
interval |
interval
live-interval-start
points
key?
interval
reload-from>>
>boolean
and
[
interval interval
live-interval-start
groups
push-at
]
when
]
each
init-resolve
groups
[|
intervals-at-point |
[
intervals-at-point
[|
interval |
interval
reload-from>>
dup
backtracking-register-home?
[
reg>>
]
when
interval
reg>>
interval
reload-rep>>
add-mapping
interval
f
>>reload-from
drop
]
each
]
{
}
make
mapping-instructions
but-last
]
assoc-map
backtracking-local-moves
set
;