Index: src/compiler/live-range-separator.cc |
diff --git a/src/compiler/live-range-separator.cc b/src/compiler/live-range-separator.cc |
index 44e9dba7b58b13e9e80bc82f1a9cb6cb79b47f6a..d81885f68f6fd07b4f207db24cb4cc26e3f771bf 100644 |
--- a/src/compiler/live-range-separator.cc |
+++ b/src/compiler/live-range-separator.cc |
@@ -44,12 +44,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); |
} |
} |