Changes in directory llvm/include/llvm/Support:

Allocator.h added (r1.1)
---
Log message:

Add a new llvm::Allocator abstraction, which will be used by a container
I'm about to add.  This is similar to, but necessarily different than, the 
STL allocator class.


---
Diffs of the changes:  (+48 -0)

 Allocator.h |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+)


Index: llvm/include/llvm/Support/Allocator.h
diff -c /dev/null llvm/include/llvm/Support/Allocator.h:1.1
*** /dev/null   Sun Oct 29 16:08:13 2006
--- llvm/include/llvm/Support/Allocator.h       Sun Oct 29 16:08:03 2006
***************
*** 0 ****
--- 1,48 ----
+ //===--- Allocator.h - Simple memory allocation abstraction -----*- C++ 
-*-===//
+ //
+ //                     The LLVM Compiler Infrastructure
+ //
+ // This file was developed by Chris Lattner and is distributed under
+ // the University of Illinois Open Source License. See LICENSE.TXT for 
details.
+ //
+ 
//===----------------------------------------------------------------------===//
+ //
+ // This file defines the MallocAllocator and BumpPtrAllocator interfaces.
+ //
+ 
//===----------------------------------------------------------------------===//
+ 
+ #ifndef LLVM_SUPPORT_ALLOCATOR_H
+ #define LLVM_SUPPORT_ALLOCATOR_H
+ 
+ #include <cstdlib>
+ 
+ namespace llvm {
+     
+ class MallocAllocator {
+ public:
+   MallocAllocator() {}
+   ~MallocAllocator() {}
+   
+   void *Allocate(unsigned Size, unsigned Alignment) { return malloc(Size); }
+   void Deallocate(void *Ptr) { free(Ptr); }
+   void PrintStats() const {}
+ };
+ 
+ /// BumpPtrAllocator - This allocator is useful for containers that need very
+ /// simple memory allocation strategies.  In particular, this just keeps
+ /// allocating memory, and never deletes it until the entire block is dead. 
This
+ /// makes allocation speedy, but must only be used when the trade-off is ok.
+ class BumpPtrAllocator {
+   void *TheMemory;
+ public:
+   BumpPtrAllocator();
+   ~BumpPtrAllocator();
+   
+   void *Allocate(unsigned Size, unsigned Alignment);
+   void Deallocate(void *Ptr) {}
+   void PrintStats() const;
+ };
+ 
+ }  // end namespace clang
+ 
+ #endif



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to