size_t i = 0; for (;
i < number_of_expected_ranges && current != nullptr;
++i, current = current->GetNext()) { if (expected[i][0] != current->GetStart()) { returnfalse;
} if (expected[i][1] != current->GetEnd()) { returnfalse;
}
}
if (current != nullptr || i != number_of_expected_ranges) { returnfalse;
}
{ // Test at the beginning of the second range. static constexpr size_t ranges[][2] = {{0, 4}, {6, 10}};
LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator);
LiveInterval* split = interval->SplitAt(6); static constexpr size_t expected[][2] = {{0, 4}};
ASSERT_TRUE(RangesEquals(interval, expected, arraysize(expected))); static constexpr size_t expected_split[][2] = {{6, 10}};
ASSERT_TRUE(RangesEquals(split, expected_split, arraysize(expected_split)));
}
{ // Test at the end of the first range. static constexpr size_t ranges[][2] = {{0, 4}, {6, 10}};
LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator);
LiveInterval* split = interval->SplitAt(4); static constexpr size_t expected[][2] = {{0, 4}};
ASSERT_TRUE(RangesEquals(interval, expected, arraysize(expected))); static constexpr size_t expected_split[][2] = {{6, 10}};
ASSERT_TRUE(RangesEquals(split, expected_split, arraysize(expected_split)));
}
{ // Test that we get null if we split at a position where the interval is dead. static constexpr size_t ranges[][2] = {{0, 4}};
LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator);
LiveInterval* split = interval->SplitAt(5);
ASSERT_TRUE(split == nullptr);
ASSERT_TRUE(RangesEquals(interval, ranges, arraysize(ranges)));
}
}
{ // Test when only used in a loop. static constexpr size_t ranges[][2] = {{0, 4}};
LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator);
interval->AddLoopRange(0, 8);
LiveRange* range = interval->GetFirstRange();
ASSERT_TRUE(range->GetNext() == nullptr);
ASSERT_EQ(range->GetStart(), 0u);
ASSERT_EQ(range->GetEnd(), 8u);
}
{ // Test when only used in a loop. static constexpr size_t ranges[][2] = {{2, 4}};
LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator);
interval->AddLoopRange(0, 8);
LiveRange* range = interval->GetFirstRange();
ASSERT_TRUE(range->GetNext() == nullptr);
ASSERT_EQ(range->GetStart(), 0u);
ASSERT_EQ(range->GetEnd(), 8u);
}
{ // Test when used just after the loop. static constexpr size_t ranges[][2] = {{2, 4}, {8, 10}};
LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator);
interval->AddLoopRange(0, 8);
LiveRange* range = interval->GetFirstRange();
ASSERT_TRUE(range->GetNext() == nullptr);
ASSERT_EQ(range->GetStart(), 0u);
ASSERT_EQ(range->GetEnd(), 10u);
}
{ // Test when use after the loop is after a lifetime hole. static constexpr size_t ranges[][2] = {{2, 4}, {10, 12}};
LiveInterval* interval = BuildInterval(ranges, arraysize(ranges), allocator);
interval->AddLoopRange(0, 8);
LiveRange* range = interval->GetFirstRange();
ASSERT_EQ(range->GetStart(), 0u);
ASSERT_EQ(range->GetEnd(), 8u);
range = range->GetNext();
ASSERT_EQ(range->GetStart(), 10u);
ASSERT_EQ(range->GetEnd(), 12u);
}
}
} // namespace art
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.