forked from OSchip/llvm-project
Added Reset() to free all allocated memory regions and reset state to be the same as right after ctor.
llvm-svn: 41728
This commit is contained in:
parent
19ce37a1cd
commit
3dba41bf37
|
@ -23,6 +23,7 @@ public:
|
|||
MallocAllocator() {}
|
||||
~MallocAllocator() {}
|
||||
|
||||
void Reset() {}
|
||||
void *Allocate(unsigned Size, unsigned Alignment) { return malloc(Size); }
|
||||
void Deallocate(void *Ptr) { free(Ptr); }
|
||||
void PrintStats() const {}
|
||||
|
@ -38,6 +39,7 @@ public:
|
|||
BumpPtrAllocator();
|
||||
~BumpPtrAllocator();
|
||||
|
||||
void Reset();
|
||||
void *Allocate(unsigned Size, unsigned Alignment);
|
||||
void Deallocate(void *Ptr) {}
|
||||
void PrintStats() const;
|
||||
|
|
|
@ -92,6 +92,12 @@ BumpPtrAllocator::~BumpPtrAllocator() {
|
|||
((MemRegion*)TheMemory)->Deallocate();
|
||||
}
|
||||
|
||||
void BumpPtrAllocator::Reset() {
|
||||
((MemRegion*)TheMemory)->Deallocate();
|
||||
TheMemory = malloc(4096);
|
||||
((MemRegion*)TheMemory)->Init(4096, 1, 0);
|
||||
}
|
||||
|
||||
void *BumpPtrAllocator::Allocate(unsigned Size, unsigned Align) {
|
||||
MemRegion *MRP = (MemRegion*)TheMemory;
|
||||
void *Ptr = MRP->Allocate(Size, Align, &MRP);
|
||||
|
|
Loading…
Reference in New Issue