X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Falloc-pool.h;h=fa9848a2b9b84dc7fcbf211b262fafe198954bac;hb=bcb496f443c82748f478105597e5ab8828067812;hp=0eb2c9685b8b52f58b74bcc91884c8790fe71612;hpb=0364c2b48c99a782c042027da4c549994adce949;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/alloc-pool.h b/gcc/alloc-pool.h index 0eb2c9685b8..fa9848a2b9b 100644 --- a/gcc/alloc-pool.h +++ b/gcc/alloc-pool.h @@ -1,5 +1,5 @@ /* Functions to support a pool of allocatable objects - Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004 + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2007 Free Software Foundation, Inc. Contributed by Daniel Berlin @@ -7,7 +7,7 @@ This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) +the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, @@ -16,9 +16,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +along with GCC; see the file COPYING3. If not see +. */ #ifndef ALLOC_POOL_H #define ALLOC_POOL_H @@ -37,7 +36,18 @@ typedef struct alloc_pool_def ALLOC_POOL_ID_TYPE id; #endif size_t elts_per_block; - alloc_pool_list free_list; + + /* These are the elements that have been allocated at least once and freed. */ + alloc_pool_list returned_free_list; + + /* These are the elements that have not yet been allocated out of + the last block obtained from XNEWVEC. */ + char* virgin_free_list; + + /* The number of elements in the virgin_free_list that can be + allocated before needing another block. */ + size_t virgin_elts_remaining; + size_t elts_allocated; size_t elts_free; size_t blocks_allocated; @@ -49,6 +59,8 @@ typedef struct alloc_pool_def extern alloc_pool create_alloc_pool (const char *, size_t, size_t); extern void free_alloc_pool (alloc_pool); +extern void empty_alloc_pool (alloc_pool); +extern void free_alloc_pool_if_empty (alloc_pool *); extern void *pool_alloc (alloc_pool); extern void pool_free (alloc_pool, void *); extern void dump_alloc_pool_statistics (void);