Mercurial > hg > CbC > CbC_gcc
comparison gcc/alloc-pool.h @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 77e2b8dfacca |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* Functions to support a pool of allocatable objects | |
2 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2007 | |
3 Free Software Foundation, Inc. | |
4 Contributed by Daniel Berlin <dan@cgsoftware.com> | |
5 | |
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 3, 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 COPYING3. If not see | |
20 <http://www.gnu.org/licenses/>. */ | |
21 #ifndef ALLOC_POOL_H | |
22 #define ALLOC_POOL_H | |
23 | |
24 typedef unsigned long ALLOC_POOL_ID_TYPE; | |
25 | |
26 typedef struct alloc_pool_list_def | |
27 { | |
28 struct alloc_pool_list_def *next; | |
29 } | |
30 *alloc_pool_list; | |
31 | |
32 typedef struct alloc_pool_def | |
33 { | |
34 const char *name; | |
35 #ifdef ENABLE_CHECKING | |
36 ALLOC_POOL_ID_TYPE id; | |
37 #endif | |
38 size_t elts_per_block; | |
39 | |
40 /* These are the elements that have been allocated at least once and freed. */ | |
41 alloc_pool_list returned_free_list; | |
42 | |
43 /* These are the elements that have not yet been allocated out of | |
44 the last block obtained from XNEWVEC. */ | |
45 char* virgin_free_list; | |
46 | |
47 /* The number of elements in the virgin_free_list that can be | |
48 allocated before needing another block. */ | |
49 size_t virgin_elts_remaining; | |
50 | |
51 size_t elts_allocated; | |
52 size_t elts_free; | |
53 size_t blocks_allocated; | |
54 alloc_pool_list block_list; | |
55 size_t block_size; | |
56 size_t elt_size; | |
57 } | |
58 *alloc_pool; | |
59 | |
60 extern alloc_pool create_alloc_pool (const char *, size_t, size_t); | |
61 extern void free_alloc_pool (alloc_pool); | |
62 extern void empty_alloc_pool (alloc_pool); | |
63 extern void free_alloc_pool_if_empty (alloc_pool *); | |
64 extern void *pool_alloc (alloc_pool); | |
65 extern void pool_free (alloc_pool, void *); | |
66 extern void dump_alloc_pool_statistics (void); | |
67 #endif |