Added member template functions to MallocAllocator and
authorTed Kremenek <kremenek@apple.com>
Wed, 17 Oct 2007 21:10:21 +0000 (21:10 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 17 Oct 2007 21:10:21 +0000 (21:10 +0000)
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

include/llvm/Support/Allocator.h

index f23a41f17fa5de1b8b5d6abb7d884f3acd8fa4bf..397cf0c7c2e6375daeb8e42abe84aad98895caa6 100644 (file)
@@ -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;
 };