1//===--- Allocator.cpp - Simple memory allocation abstraction -------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file implements the BumpPtrAllocator interface.
11//
12//===----------------------------------------------------------------------===//
13
14#include "llvm/Support/Allocator.h"
15#include "llvm/Support/Compiler.h"
16#include "llvm/Support/DataTypes.h"
17#include "llvm/Support/Memory.h"
18#include "llvm/Support/Recycler.h"
19#include "llvm/Support/raw_ostream.h"
20#include <cstring>
21
22namespace llvm {
23
24namespace detail {
25
26void printBumpPtrAllocatorStats(unsigned NumSlabs, size_t BytesAllocated,
27                                size_t TotalMemory) {
28  errs() << "\nNumber of memory regions: " << NumSlabs << '\n'
29         << "Bytes used: " << BytesAllocated << '\n'
30         << "Bytes allocated: " << TotalMemory << '\n'
31         << "Bytes wasted: " << (TotalMemory - BytesAllocated)
32         << " (includes alignment, etc)\n";
33}
34
35} // End namespace detail.
36
37void PrintRecyclerStats(size_t Size,
38                        size_t Align,
39                        size_t FreeListSize) {
40  errs() << "Recycler element size: " << Size << '\n'
41         << "Recycler element alignment: " << Align << '\n'
42         << "Number of elements free for recycling: " << FreeListSize << '\n';
43}
44
45}
46