mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-05 10:27:02 +00:00
add a method to BumpPtrAllocator that allows allocating elements
with a specified alignment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63629 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3e62b2dc93
commit
6038840210
@ -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
Block a user