Skip to content

Commit d171cb8

Browse files
committed
Add stub to Defrag compressed set with default return value
Signed-off-by: Abhijat Malviya <[email protected]>
1 parent cf83e33 commit d171cb8

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

src/core/search/block_list.cc

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44

55
namespace {
66

7-
template <typename T>
8-
using CanDefragmentT = decltype(std::declval<T>().Defragment(std::declval<size_t>(),
9-
std::declval<dfly::PageUsage*>()));
10-
11-
template <typename, typename = void> struct CanDefragment : std::false_type {};
12-
13-
template <typename T> struct CanDefragment<T, std::void_t<CanDefragmentT<T>>> : std::true_type {};
7+
template <typename T> bool DefragmentVector(PMR_NS::vector<T>& vec, dfly::PageUsage* page_usage) {
8+
if (vec.empty() || !page_usage->IsPageForObjectUnderUtilized(vec.data())) {
9+
return false;
10+
}
1411

15-
template <typename T> inline constexpr bool CanDefragmentV = CanDefragment<T>::value;
12+
PMR_NS::vector<T> new_vec(vec.get_allocator());
13+
new_vec.reserve(vec.size());
14+
for (auto&& element : vec) {
15+
new_vec.push_back(std::move(element));
16+
}
17+
vec = std::move(new_vec);
18+
return true;
19+
}
1620

1721
} // namespace
1822

@@ -137,11 +141,9 @@ DefragmentResult BlockList<Container>::Defragment(PageUsage* page_usage) {
137141
result.objects_moved += 1;
138142
}
139143

140-
if constexpr (CanDefragmentV<Container>) {
141-
for (Container& block : blocks_) {
142-
if (result.Merge(block.Defragment(quota_usec, page_usage)).quota_depleted) {
143-
break;
144-
}
144+
for (Container& block : blocks_) {
145+
if (result.Merge(block.Defragment(page_usage)).quota_depleted) {
146+
break;
145147
}
146148
}
147149
return result;

src/core/search/compressed_sorted_set.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ class CompressedSortedSet {
9191
return tail_value_.value();
9292
}
9393

94+
static DefragmentResult Defragment([[maybe_unused]] PageUsage* page_usage) {
95+
return {};
96+
}
97+
9498
private:
9599
struct EntryLocation {
96100
IntType value; // Value or 0

0 commit comments

Comments
 (0)