|
LLVM
4.0.0
|
Allocate memory in an ever growing pool, as if by bump-pointer. More...
#include <Allocator.h>
Public Member Functions | |
| BumpPtrAllocatorImpl () | |
| template<typename T > | |
| BumpPtrAllocatorImpl (T &&Allocator) | |
| BumpPtrAllocatorImpl (BumpPtrAllocatorImpl &&Old) | |
| ~BumpPtrAllocatorImpl () | |
| BumpPtrAllocatorImpl & | operator= (BumpPtrAllocatorImpl &&RHS) |
| void | Reset () |
| Deallocate all but the current slab and reset the current pointer to the beginning of it, freeing all memory allocated so far. More... | |
| LLVM_ATTRIBUTE_RETURNS_NONNULL LLVM_ATTRIBUTE_RETURNS_NOALIAS void * | Allocate (size_t Size, size_t Alignment) |
| Allocate space at the specified alignment. More... | |
| void | Deallocate (const void *Ptr, size_t Size) |
| size_t | GetNumSlabs () const |
| size_t | getTotalMemory () const |
| size_t | getBytesAllocated () const |
| void | PrintStats () const |
Public Member Functions inherited from llvm::AllocatorBase< BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold > > | |
| void * | Allocate (size_t Size, size_t Alignment) |
| Allocate Size bytes of Alignment aligned memory. More... | |
| T * | Allocate (size_t Num=1) |
| Allocate space for a sequence of objects without constructing them. More... | |
| void | Deallocate (const void *Ptr, size_t Size) |
| Deallocate Ptr to Size bytes of memory allocated by this allocator. More... | |
| std::enable_if< !std::is_same < typename std::remove_cv< T > ::type, void >::value, void > ::type | Deallocate (T *Ptr, size_t Num=1) |
| Deallocate space for a sequence of objects without constructing them. More... | |
Friends | |
| template<typename T > | |
| class | SpecificBumpPtrAllocator |
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 memory rather than relying on a boundless contiguous heap. However, it has bump-pointer semantics in that it is a monotonically growing pool of memory where every allocation is found by merely allocating the next N bytes in the slab, or the next N bytes in the next slab.
Note that this also has a threshold for forcing allocations above a certain size into their own slab.
The BumpPtrAllocatorImpl template defaults to using a MallocAllocator object, which wraps malloc, to allocate memory, but it can be changed to use a custom allocator.
Definition at line 138 of file Allocator.h.
|
inline |
Definition at line 147 of file Allocator.h.
|
inline |
Definition at line 150 of file Allocator.h.
|
inline |
Definition at line 156 of file Allocator.h.
|
inline |
Definition at line 167 of file Allocator.h.
|
inline |
Allocate space at the specified alignment.
Definition at line 212 of file Allocator.h.
Referenced by llvm::SpecificBumpPtrAllocator< llvm::LazyCallGraph::SCC >::Allocate(), llvm::MCContext::allocate(), llvm::GVNExpression::AggregateValueExpression::allocateIntOperands(), llvm::MachineFunction::allocateMemRefsArray(), llvm::MachineFunction::allocateRegisterMask(), llvm::msf::MSFBuilder::build(), llvm::SSAUpdaterImpl< UpdaterT >::BuildBlockList(), llvm::ImmutableListFactory< T >::concat(), llvm::MachineFunctionInfo::create(), llvm::MachineFunction::createExternalSymbolName(), llvm::ImutAVLFactory< ImutInfo >::createNode(), llvm::FunctionType::get(), llvm::BitsInit::get(), llvm::ListInit::get(), llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getAddRecExpr(), llvm::ScalarEvolution::getMulExpr(), llvm::ScalarEvolution::getSMaxExpr(), llvm::ScalarEvolution::getUMaxExpr(), llvm::SelectionDAG::getVectorShuffle(), llvm::SelectionDAG::getVTList(), llvm::FoldingSetNodeID::Intern(), llvm::yaml::MappingNormalizationHeap< TNorm, TFinal >::MappingNormalizationHeap(), llvm::msf::MappedBlockStream::readBytes(), llvm::StringSaver::save(), llvm::codeview::TypeSerializer::visitMemberEnd(), and llvm::codeview::TypeSerializer::visitTypeEndGetIndex().
|
inline |
Definition at line 266 of file Allocator.h.
|
inline |
Definition at line 284 of file Allocator.h.
Referenced by llvm::msf::MappedBlockStream::getNumBytesCopied().
|
inline |
Definition at line 273 of file Allocator.h.
|
inline |
Definition at line 275 of file Allocator.h.
Referenced by llvm::BumpPtrAllocatorImpl< MallocAllocator, 65536 >::PrintStats().
|
inline |
Definition at line 172 of file Allocator.h.
|
inline |
Definition at line 286 of file Allocator.h.
|
inline |
Deallocate all but the current slab and reset the current pointer to the beginning of it, freeing all memory allocated so far.
Definition at line 192 of file Allocator.h.
Referenced by llvm::SDDbgInfo::clear(), llvm::SelectionDAG::clear(), llvm::rdf::NodeAllocator::clear(), llvm::SpecificBumpPtrAllocator< llvm::LazyCallGraph::SCC >::DestroyAll(), llvm::LiveStacks::releaseMemory(), llvm::LiveIntervals::releaseMemory(), llvm::SlotIndexes::releaseMemory(), and llvm::MCContext::reset().
|
friend |
Definition at line 356 of file Allocator.h.
1.8.6