147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//===--- Allocator.cpp - Simple memory allocation abstraction -------------===//
247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//
347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//                     The LLVM Compiler Infrastructure
447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//
547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// This file is distributed under the University of Illinois Open Source
647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// License. See LICENSE.TXT for details.
747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//
847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//===----------------------------------------------------------------------===//
947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//
1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// This file implements the BumpPtrAllocator interface.
1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//
1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org//===----------------------------------------------------------------------===//
1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "llvm/Support/Allocator.h"
1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "llvm/Support/Compiler.h"
1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "llvm/Support/DataTypes.h"
1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "llvm/Support/Memory.h"
1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "llvm/Support/Recycler.h"
1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "llvm/Support/raw_ostream.h"
2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <cstring>
2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace llvm {
2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace detail {
2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgvoid printBumpPtrAllocatorStats(unsigned NumSlabs, size_t BytesAllocated,
2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org                                size_t TotalMemory) {
2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  errs() << "\nNumber of memory regions: " << NumSlabs << '\n'
2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org         << "Bytes used: " << BytesAllocated << '\n'
3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org         << "Bytes allocated: " << TotalMemory << '\n'
3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org         << "Bytes wasted: " << (TotalMemory - BytesAllocated)
3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org         << " (includes alignment, etc)\n";
3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} // End namespace detail.
3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgvoid PrintRecyclerStats(size_t Size,
3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org                        size_t Align,
3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org                        size_t FreeListSize) {
4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  errs() << "Recycler element size: " << Size << '\n'
4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org         << "Recycler element alignment: " << Align << '\n'
4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org         << "Number of elements free for recycling: " << FreeListSize << '\n';
4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org