mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-01-07 22:24:28 +00:00
Reapply r99881 with some fixes: only call destructor in releaseMemory!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99883 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -78,6 +78,21 @@ void BumpPtrAllocator::Reset() {
|
||||
End = ((char*)CurSlab) + CurSlab->Size;
|
||||
}
|
||||
|
||||
void BumpPtrAllocator::Reset(size_t Size, size_t Alignment, DTorFunction DTor) {
|
||||
if (Alignment == 0) Alignment = 1;
|
||||
MemSlab *Slab = CurSlab;
|
||||
while (Slab) {
|
||||
char *End = Slab == CurSlab ? CurPtr : (char*)Slab + Slab->Size;
|
||||
for (char *Ptr = (char*)Slab+1; Ptr < End; Ptr += Size) {
|
||||
Ptr = AlignPtr(Ptr, Alignment);
|
||||
if (Ptr + Size <= End)
|
||||
DTor(Ptr);
|
||||
}
|
||||
Slab = Slab->NextPtr;
|
||||
}
|
||||
Reset();
|
||||
}
|
||||
|
||||
/// Allocate - Allocate space at the specified alignment.
|
||||
///
|
||||
void *BumpPtrAllocator::Allocate(size_t Size, size_t Alignment) {
|
||||
|
||||
Reference in New Issue
Block a user