add a method to BumpPtrAllocator that allows allocating elements

with a specified alignment.

llvm-svn: 63629
This commit is contained in:
Chris Lattner 2009-02-03 07:39:50 +00:00
parent c8233df64b
commit ed8903e45a
1 changed files with 14 additions and 0 deletions

View File

@ -58,16 +58,30 @@ public:
void *Allocate(size_t Size, size_t Alignment);
/// Allocate space, but do not construct, one object.
///
template <typename T>
T *Allocate() {
return static_cast<T*>(Allocate(sizeof(T),AlignOf<T>::Alignment));
}
/// Allocate space for an array of objects. This does not construct the
/// objects though.
template <typename T>
T *Allocate(size_t Num) {
return static_cast<T*>(Allocate(Num * sizeof(T), AlignOf<T>::Alignment));
}
/// Allocate space for a specific count of elements and with a specified
/// alignment.
template <typename T>
T *Allocate(size_t Num, unsigned Alignment) {
// Round EltSize up to the specified alignment.
unsigned EltSize = (sizeof(T)+Alignment-1)&~Alignment;
return static_cast<T*>(Allocate(Num * EltSize, Alignment));
}
void Deallocate(void * /*Ptr*/) {}
void PrintStats() const;