Index: src/compiler/live-range-separator.cc |
diff --git a/src/compiler/live-range-separator.cc b/src/compiler/live-range-separator.cc |
index f29e4b4a202efb26c320c5892b464ba62fa38ea4..ea9152b818566e4cb25f3ac34404105484a33c99 100644 |
--- a/src/compiler/live-range-separator.cc |
+++ b/src/compiler/live-range-separator.cc |
@@ -78,12 +78,14 @@ void CreateSplinter(TopLevelLiveRange *range, RegisterAllocationData *data, |
if (range->MayRequireSpillRange()) { |
data->CreateSpillRangeForLiveRange(range); |
} |
- TopLevelLiveRange *result = data->NextLiveRange(range->machine_type()); |
- DCHECK_NULL(data->live_ranges()[result->vreg()]); |
- data->live_ranges()[result->vreg()] = result; |
- |
+ if (range->splinter() == nullptr) { |
+ TopLevelLiveRange *splinter = data->NextLiveRange(range->machine_type()); |
+ DCHECK_NULL(data->live_ranges()[splinter->vreg()]); |
+ data->live_ranges()[splinter->vreg()] = splinter; |
+ range->SetSplinter(splinter); |
+ } |
Zone *zone = data->allocation_zone(); |
- range->Splinter(start, end, result, zone); |
+ range->Splinter(start, end, zone); |
} |
} |