[llvm-commits] CVS: llvm/include/llvm/Support/Allocator.h

Chris Lattner sabre at nondot.org
Sun Oct 29 14:08:20 PST 2006



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






More information about the llvm-commits mailing list