diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-10-17 21:10:21 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-10-17 21:10:21 +0000 |
commit | 869a3344f17975f57a328dcc8bacf6775344c045 (patch) | |
tree | 79de592fff4741cab2bbc9fd1d42c86b9df16b7a | |
parent | a4d9869cf291e6f87bf9e7adfcd9a2c4e4518172 (diff) |
Added member template functions to MallocAllocator and
BumpPtrAllocator that implement allocations that return a properly
typed pointer. For BumpPtrAllocator, the allocated memory is
automatically aligned to the minimum alignment of the type (as
calculated by llvm::AlignOf::Alignment).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43087 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Support/Allocator.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/llvm/Support/Allocator.h b/include/llvm/Support/Allocator.h index f23a41f17f..397cf0c7c2 100644 --- a/include/llvm/Support/Allocator.h +++ b/include/llvm/Support/Allocator.h @@ -14,6 +14,7 @@ #ifndef LLVM_SUPPORT_ALLOCATOR_H #define LLVM_SUPPORT_ALLOCATOR_H +#include "llvm/Support/AlignOf.h" #include <cstdlib> namespace llvm { @@ -25,6 +26,10 @@ public: void Reset() {} void *Allocate(unsigned Size, unsigned Alignment) { return malloc(Size); } + + template <typename T> + T* Allocate() { return reinterpret_cast<T*>(malloc(sizeof(T))); } + void Deallocate(void *Ptr) { free(Ptr); } void PrintStats() const {} }; @@ -41,6 +46,13 @@ public: void Reset(); void *Allocate(unsigned Size, unsigned Alignment); + + template <typename T> + T* Allocate() { + return reinterpret_cast<T*>(Allocate(sizeof(T),AlignOf<T>::Alignment)); + } + + void Deallocate(void *Ptr) {} void PrintStats() const; }; |