}
TopLevelLiveRange *splinter_parent = range->splintered_from();
- splinter_parent->Merge(range, data());
+ int to_remove = range->vreg();
+ splinter_parent->Merge(range, data()->allocation_zone());
+ data()->live_ranges()[to_remove] = nullptr;
}
}
}
-void TopLevelLiveRange::Merge(TopLevelLiveRange* other,
- RegisterAllocationData* data) {
+void TopLevelLiveRange::Merge(TopLevelLiveRange* other, Zone* zone) {
DCHECK(Start() < other->Start());
DCHECK(other->splintered_from() == this);
- data->live_ranges()[other->vreg()] = nullptr;
-
LiveRange* last_other = other->last_child();
LiveRange* last_me = last_child();
// register allocation splitting.
LiveRange* after = last_insertion_point_->next();
if (last_insertion_point_->End() > other->Start()) {
- LiveRange* new_after =
- last_insertion_point_->SplitAt(other->Start(), data->allocation_zone());
+ LiveRange* new_after = last_insertion_point_->SplitAt(other->Start(), zone);
new_after->set_spilled(last_insertion_point_->spilled());
if (!new_after->spilled())
new_after->set_assigned_register(
// Assuming other was splintered from this range, embeds other and its
// children as part of the children sequence of this range.
- void Merge(TopLevelLiveRange* other, RegisterAllocationData* data);
+ void Merge(TopLevelLiveRange* other, Zone* zone);
// Spill range management.
void SetSpillRange(SpillRange* spill_range);