[llvm-commits] [llvm] r65726 - /llvm/branches/Apple/Dib/include/llvm/Support/Allocator.h
Bill Wendling
isanbard at gmail.com
Sat Feb 28 14:08:19 PST 2009
Author: void
Date: Sat Feb 28 16:08:19 2009
New Revision: 65726
URL: http://llvm.org/viewvc/llvm-project?rev=65726&view=rev
Log:
Merge r63629 into Dib:
add a method to BumpPtrAllocator that allows allocating elements
with a specified alignment.
Modified:
llvm/branches/Apple/Dib/include/llvm/Support/Allocator.h
Modified: llvm/branches/Apple/Dib/include/llvm/Support/Allocator.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/include/llvm/Support/Allocator.h?rev=65726&r1=65725&r2=65726&view=diff
==============================================================================
--- llvm/branches/Apple/Dib/include/llvm/Support/Allocator.h (original)
+++ llvm/branches/Apple/Dib/include/llvm/Support/Allocator.h Sat Feb 28 16:08:19 2009
@@ -58,16 +58,30 @@
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;
More information about the llvm-commits
mailing list