Index: src/compiler/register-allocator.h |
diff --git a/src/compiler/register-allocator.h b/src/compiler/register-allocator.h |
index 9346fa65adeb89aa780b983baf2635114990f223..a2171cafaaae2e7274cfbb536769ca079510d8af 100644 |
--- a/src/compiler/register-allocator.h |
+++ b/src/compiler/register-allocator.h |
@@ -407,6 +407,7 @@ class LiveRange : public ZoneObject { |
typedef BitField<int32_t, 6, 6> AssignedRegisterField; |
typedef BitField<MachineType, 12, 15> MachineTypeField; |
+ // Unique among children and splinters of the same virtual register. |
int relative_id_; |
uint32_t bits_; |
UseInterval* last_interval_; |
@@ -535,7 +536,11 @@ class TopLevelLiveRange final : public LiveRange { |
void UpdateSpillRangePostMerge(TopLevelLiveRange* merged); |
int vreg() const { return vreg_; } |
- int GetNextChildId() { return ++last_child_id_; } |
+ int GetNextChildId() { |
+ return IsSplinter() ? splintered_from()->GetNextChildId() |
+ : ++last_child_id_; |
+ } |
+ |
bool IsSpilledOnlyInDeferredBlocks() const { |
return spilled_in_deferred_blocks_; |
} |