forked from OSchip/llvm-project
add a method to BumpPtrAllocator that allows allocating elements
with a specified alignment. llvm-svn: 63629
This commit is contained in:
parent
c8233df64b
commit
ed8903e45a
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue