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