recolor-on-register ( interval reg depth -- ? )


Vocabulary
compiler.cfg.register-allocation.greedy

Inputs
intervalan object
regan object
depthan object


Outputs
?an object


Definition


:: recolor-on-register ( interval reg depth -- ? )
interval reg register-conflicts
:> conflicts conflicts empty?
[ interval reg greedy-assign t ] [
depth 0 > conflicts length 8 <= and conflicts
[ greedy-recolor-fixed get key? not ] all? and [
save-greedy-state :> saved conflicts
[ greedy-unassign ] each interval reg greedy-assign
t interval greedy-recolor-fixed get set-at conflicts
[ depth 1 - recolor-interval ] all?
[ t ] [
saved restore-greedy-state
"recolor-rollbacks" greedy-count f
] if
] [ f ] if
] if ;