OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / ggc.h
index d6e2303..74c3639 100644 (file)
--- a/gcc/ggc.h
+++ b/gcc/ggc.h
@@ -1,12 +1,12 @@
 /* Garbage collection for the GNU compiler.
 /* Garbage collection for the GNU compiler.
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
    Free Software Foundation, Inc.
 
 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
    Free Software Foundation, Inc.
 
 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) any later
+Software Foundation; either version 3, or (at your option) any later
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,9 +15,8 @@ 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
 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, 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA.  */
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
 
 #ifndef GCC_GGC_H
 #define GCC_GGC_H
 
 #ifndef GCC_GGC_H
 #define GCC_GGC_H
@@ -121,6 +120,9 @@ extern int ggc_marked_p     (const void *);
 /* Mark the entries in the string pool.  */
 extern void ggc_mark_stringpool        (void);
 
 /* Mark the entries in the string pool.  */
 extern void ggc_mark_stringpool        (void);
 
+/* Purge the entries in the string pool.  */
+extern void ggc_purge_stringpool (void);
+
 /* Call ggc_set_mark on all the roots.  */
 
 extern void ggc_mark_roots (void);
 /* Call ggc_set_mark on all the roots.  */
 
 extern void ggc_mark_roots (void);
@@ -135,7 +137,7 @@ extern void gt_pch_restore_stringpool (void);
 
 extern void gt_pch_p_S (void *, void *, gt_pointer_operator, void *);
 extern void gt_pch_n_S (const void *);
 
 extern void gt_pch_p_S (void *, void *, gt_pointer_operator, void *);
 extern void gt_pch_n_S (const void *);
-extern void gt_ggc_m_S (void *);
+extern void gt_ggc_m_S (const void *);
 
 /* Initialize the string pool.  */
 extern void init_stringpool (void);
 
 /* Initialize the string pool.  */
 extern void init_stringpool (void);
@@ -201,6 +203,12 @@ extern void ggc_pch_read (FILE *, void *);
 /* When set, ggc_collect will do collection.  */
 extern bool ggc_force_collect;
 
 /* When set, ggc_collect will do collection.  */
 extern bool ggc_force_collect;
 
+/* When true, identifier nodes are considered as GC roots.  When
+   false, identifier nodes are treated like any other GC-allocated
+   object, and the identifier hash table is treated as a weak
+   hash.  */
+extern bool ggc_protect_identifiers;
+
 /* The internal primitive.  */
 extern void *ggc_alloc_stat (size_t MEM_STAT_DECL);
 #define ggc_alloc(s) ggc_alloc_stat (s MEM_STAT_INFO)
 /* The internal primitive.  */
 extern void *ggc_alloc_stat (size_t MEM_STAT_DECL);
 #define ggc_alloc(s) ggc_alloc_stat (s MEM_STAT_INFO)
@@ -222,16 +230,17 @@ extern void ggc_record_overhead (size_t, size_t, void * MEM_STAT_DECL);
 extern void ggc_free_overhead (void *);
 extern void ggc_prune_overhead_list (void);
 
 extern void ggc_free_overhead (void *);
 extern void ggc_prune_overhead_list (void);
 
-extern void dump_ggc_loc_statistics (void);
+extern void dump_ggc_loc_statistics (bool);
 
 /* Type-safe, C++-friendly versions of ggc_alloc() and gcc_calloc().  */
 #define GGC_NEW(T)             ((T *) ggc_alloc (sizeof (T)))
 #define GGC_CNEW(T)            ((T *) ggc_alloc_cleared (sizeof (T)))
 #define GGC_NEWVEC(T, N)       ((T *) ggc_alloc ((N) * sizeof(T)))
 #define GGC_CNEWVEC(T, N)      ((T *) ggc_alloc_cleared ((N) * sizeof(T)))
 
 /* Type-safe, C++-friendly versions of ggc_alloc() and gcc_calloc().  */
 #define GGC_NEW(T)             ((T *) ggc_alloc (sizeof (T)))
 #define GGC_CNEW(T)            ((T *) ggc_alloc_cleared (sizeof (T)))
 #define GGC_NEWVEC(T, N)       ((T *) ggc_alloc ((N) * sizeof(T)))
 #define GGC_CNEWVEC(T, N)      ((T *) ggc_alloc_cleared ((N) * sizeof(T)))
+#define GGC_RESIZEVEC(T, P, N)  ((T *) ggc_realloc ((P), (N) * sizeof (T)))
 #define GGC_NEWVAR(T, S)       ((T *) ggc_alloc ((S)))
 #define GGC_CNEWVAR(T, S)      ((T *) ggc_alloc_cleared ((S)))
 #define GGC_NEWVAR(T, S)       ((T *) ggc_alloc ((S)))
 #define GGC_CNEWVAR(T, S)      ((T *) ggc_alloc_cleared ((S)))
-#define GGC_RESIZEVEC(T, P, N)  ((T *) ggc_realloc ((P), (N) * sizeof (T)))
+#define GGC_RESIZEVAR(T, P, N)  ((T *) ggc_realloc ((P), (N)))
 
 #define ggc_alloc_rtvec(NELT)                                           \
   ((rtvec) ggc_alloc_zone (sizeof (struct rtvec_def) + ((NELT) - 1)     \
 
 #define ggc_alloc_rtvec(NELT)                                           \
   ((rtvec) ggc_alloc_zone (sizeof (struct rtvec_def) + ((NELT) - 1)     \