template<class SubClass>
void Deallocate(SubClass* E) { return Base.Deallocate(Allocator, E); }
- void PrintStats() { Base.PrintStats(); }
+ void PrintStats() {
+ Allocator.PrintStats();
+ Base.PrintStats();
+ }
};
}
+template<class AllocatorType, class T, size_t Size, size_t Align>
+inline void *operator new(size_t size,
+ llvm::RecyclingAllocator<AllocatorType,
+ T, Size, Align> &Allocator) {
+ assert(size <= Size && "allocation size exceeded");
+ return Allocator.Allocate();
+}
+
+template<class AllocatorType, class T, size_t Size, size_t Align>
+inline void operator delete(void *E,
+ llvm::RecyclingAllocator<AllocatorType,
+ T, Size, Align> &A) {
+ A.Deallocate(E);
+}
+
#endif