[Allocator] Hoist the external helper function into a namespace scope

declaration. GCC 4.7 appears to get hopelessly confused by declaring
this function within a member function of a class template. Go figure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206152 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chandler Carruth 2014-04-14 06:42:56 +00:00
parent 273a62f9ac
commit 1907f75445
2 changed files with 14 additions and 6 deletions

View File

@ -67,6 +67,14 @@ public:
void Deallocate(void *Slab, size_t Size) { Allocator.Deallocate(Slab); }
};
namespace detail {
// We call out to an external function to actually print the message as the
// printing code uses Allocator.h in its implementation.
void printBumpPtrAllocatorStats(unsigned NumSlabs, size_t BytesAllocated,
size_t TotalMemory);
} // End namespace detail.
/// \brief Allocate memory in an ever growing pool, as if by bump-pointer.
///
/// This isn't strictly a bump-pointer allocator as it uses backing slabs of
@ -200,12 +208,8 @@ public:
}
void PrintStats() const {
// We call out to an external function to actually print the message as the
// printing code uses Allocator.h in its implementation.
extern void printBumpPtrAllocatorStats(
unsigned NumSlabs, size_t BytesAllocated, size_t TotalMemory);
printBumpPtrAllocatorStats(Slabs.size(), BytesAllocated, getTotalMemory());
detail::printBumpPtrAllocatorStats(Slabs.size(), BytesAllocated,
getTotalMemory());
}
private:

View File

@ -21,6 +21,8 @@
namespace llvm {
namespace detail {
void printBumpPtrAllocatorStats(unsigned NumSlabs, size_t BytesAllocated,
size_t TotalMemory) {
errs() << "\nNumber of memory regions: " << NumSlabs << '\n'
@ -30,6 +32,8 @@ void printBumpPtrAllocatorStats(unsigned NumSlabs, size_t BytesAllocated,
<< " (includes alignment, etc)\n";
}
} // End namespace detail.
void PrintRecyclerStats(size_t Size,
size_t Align,
size_t FreeListSize) {