mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Fix llvm::BumpPtrAllocatorImpl::Reset()
BumpPtrAllocator's Reset wouldn't clear CustomSizedSlabs if Slabs.size() == 0. Patch by Kal <b17c0de@gmail.com>! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237588 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0b9ee775f5
commit
febe7813c8
@ -187,6 +187,9 @@ public:
|
||||
/// \brief Deallocate all but the current slab and reset the current pointer
|
||||
/// to the beginning of it, freeing all memory allocated so far.
|
||||
void Reset() {
|
||||
DeallocateCustomSizedSlabs();
|
||||
CustomSizedSlabs.clear();
|
||||
|
||||
if (Slabs.empty())
|
||||
return;
|
||||
|
||||
@ -198,8 +201,6 @@ public:
|
||||
// Deallocate all but the first slab, and deallocate all custom-sized slabs.
|
||||
DeallocateSlabs(std::next(Slabs.begin()), Slabs.end());
|
||||
Slabs.erase(std::next(Slabs.begin()), Slabs.end());
|
||||
DeallocateCustomSizedSlabs();
|
||||
CustomSizedSlabs.clear();
|
||||
}
|
||||
|
||||
/// \brief Allocate space at the specified alignment.
|
||||
|
@ -61,6 +61,13 @@ TEST(AllocatorTest, ThreeSlabs) {
|
||||
// again.
|
||||
TEST(AllocatorTest, TestReset) {
|
||||
BumpPtrAllocator Alloc;
|
||||
|
||||
// Allocate something larger than the SizeThreshold=4096.
|
||||
(void)Alloc.Allocate(5000, 1);
|
||||
Alloc.Reset();
|
||||
// Calling Reset should free all CustomSizedSlabs.
|
||||
EXPECT_EQ(0u, Alloc.GetNumSlabs());
|
||||
|
||||
Alloc.Allocate(3000, 1);
|
||||
EXPECT_EQ(1U, Alloc.GetNumSlabs());
|
||||
Alloc.Allocate(3000, 1);
|
||||
|
Loading…
Reference in New Issue
Block a user