| //===- PoolAllocator.h - Pool allocator runtime interface file --*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file was developed by the LLVM research group and is distributed under |
| // the University of Illinois Open Source License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file defines the interface which is implemented by the LLVM pool |
| // allocator runtime library. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef POOLALLOCATOR_RUNTIME_H |
| #define POOLALLOCATOR_RUNTIME_H |
| |
| typedef struct PoolTy { |
| // Ptr1, Ptr2 - Implementation specified data pointers. |
| void *Ptr1, *Ptr2; |
| |
| // NodeSize - Keep track of the object size tracked by this pool |
| unsigned NodeSize; |
| |
| // FreeablePool - Set to false if the memory from this pool cannot be freed |
| // before destroy. |
| // |
| unsigned FreeablePool; |
| } PoolTy; |
| |
| extern "C" { |
| void poolinit(PoolTy *Pool, unsigned NodeSize); |
| void poolmakeunfreeable(PoolTy *Pool); |
| void pooldestroy(PoolTy *Pool); |
| void *poolalloc(PoolTy *Pool, unsigned NumBytes); |
| void poolfree(PoolTy *Pool, void *Node); |
| void poolcheck(PoolTy *Pool, void *Node); |
| } |
| |
| #endif |