@@ -44,18 +44,19 @@ void VirtualRangeAllocator::dump() const
44
44
}
45
45
}
46
46
47
- void VirtualRangeAllocator::carve_from_region (VirtualRange const & from, VirtualRange const & range)
47
+ ErrorOr< void > VirtualRangeAllocator::carve_from_region (VirtualRange const & from, VirtualRange const & range)
48
48
{
49
49
VERIFY (m_lock.is_locked ());
50
50
auto remaining_parts = from.carve (range);
51
51
VERIFY (remaining_parts.size () >= 1 );
52
52
VERIFY (m_total_range.contains (remaining_parts[0 ]));
53
53
m_available_ranges.remove (from.base ().get ());
54
- m_available_ranges.insert (remaining_parts[0 ].base ().get (), remaining_parts[0 ]);
54
+ TRY ( m_available_ranges.try_insert (remaining_parts[0 ].base ().get (), remaining_parts[0 ]) );
55
55
if (remaining_parts.size () == 2 ) {
56
56
VERIFY (m_total_range.contains (remaining_parts[1 ]));
57
- m_available_ranges.insert (remaining_parts[1 ].base ().get (), remaining_parts[1 ]);
57
+ TRY ( m_available_ranges.try_insert (remaining_parts[1 ].base ().get (), remaining_parts[1 ]) );
58
58
}
59
+ return {};
59
60
}
60
61
61
62
ErrorOr<VirtualRange> VirtualRangeAllocator::try_allocate_randomized (size_t size, size_t alignment)
@@ -124,7 +125,7 @@ ErrorOr<VirtualRange> VirtualRangeAllocator::try_allocate_anywhere(size_t size,
124
125
m_available_ranges.remove (it.key ());
125
126
return allocated_range;
126
127
}
127
- carve_from_region (*it, allocated_range);
128
+ TRY ( carve_from_region (*it, allocated_range) );
128
129
return allocated_range;
129
130
}
130
131
dmesgln (" VirtualRangeAllocator: Failed to allocate anywhere: size={}, alignment={}" , size, alignment);
@@ -153,7 +154,7 @@ ErrorOr<VirtualRange> VirtualRangeAllocator::try_allocate_specific(VirtualAddres
153
154
m_available_ranges.remove (available_range->base ().get ());
154
155
return allocated_range;
155
156
}
156
- carve_from_region (*available_range, allocated_range);
157
+ TRY ( carve_from_region (*available_range, allocated_range) );
157
158
return allocated_range;
158
159
}
159
160
0 commit comments