coalesce-bundle-groups ( intervals -- groups )


Vocabulary
compiler.cfg.register-allocation.backtracking

Inputs
intervalsan object


Outputs
groupsan object


Definition


:: coalesce-bundle-groups ( intervals -- groups )
H{ } clone :> groups intervals
[ dup vreg>> groups push-at ] each
backtracking-affinities get [| pair |
pair first groups at
:> first-group pair second groups at
:> second-group first-group second-group and [
first-group second-group eq?
[ ] [
first-group second-group mergeable-groups? [
first-group second-group append
:> merged merged
[ vreg>> merged swap groups set-at ] each
backtracking-merges inc
] when
] if
] when
] each groups values members ;