]>
Commit | Line | Data |
---|---|---|
7f22efe1 | 1 | /* Functions to support a pool of allocatable objects |
e146f815 | 2 | Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004 |
76abd4c6 | 3 | Free Software Foundation, Inc. |
7f22efe1 | 4 | Contributed by Daniel Berlin <dan@cgsoftware.com> |
76abd4c6 | 5 | |
7f22efe1 DB |
6 | This file is part of GCC. |
7 | ||
8 | GCC is free software; you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation; either version 2, or (at your option) | |
11 | any later version. | |
12 | ||
13 | GCC is distributed in the hope that it will be useful, | |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with GCC; see the file COPYING. If not, write to | |
366ccddb KC |
20 | the Free Software Foundation, 51 Franklin Street, Fifth Floor, |
21 | Boston, MA 02110-1301, USA. */ | |
7f22efe1 DB |
22 | #ifndef ALLOC_POOL_H |
23 | #define ALLOC_POOL_H | |
24 | ||
76abd4c6 JZ |
25 | typedef unsigned long ALLOC_POOL_ID_TYPE; |
26 | ||
7f22efe1 DB |
27 | typedef struct alloc_pool_list_def |
28 | { | |
29 | struct alloc_pool_list_def *next; | |
30 | } | |
31 | *alloc_pool_list; | |
32 | ||
33 | typedef struct alloc_pool_def | |
34 | { | |
1e0f41c9 | 35 | const char *name; |
76abd4c6 JZ |
36 | #ifdef ENABLE_CHECKING |
37 | ALLOC_POOL_ID_TYPE id; | |
38 | #endif | |
7f22efe1 DB |
39 | size_t elts_per_block; |
40 | alloc_pool_list free_list; | |
41 | size_t elts_allocated; | |
42 | size_t elts_free; | |
43 | size_t blocks_allocated; | |
44 | alloc_pool_list block_list; | |
45 | size_t block_size; | |
46 | size_t elt_size; | |
47 | } | |
48 | *alloc_pool; | |
49 | ||
4682ae04 AJ |
50 | extern alloc_pool create_alloc_pool (const char *, size_t, size_t); |
51 | extern void free_alloc_pool (alloc_pool); | |
52 | extern void *pool_alloc (alloc_pool); | |
53 | extern void pool_free (alloc_pool, void *); | |
1e0f41c9 | 54 | extern void dump_alloc_pool_statistics (void); |
7f22efe1 | 55 | #endif |