ggc-zone.c (ggc_alloc_zone_1): Add MEM_STAT_DECL parameter.
authorPaolo Bonzini <bonzini@gnu.org>
Tue, 4 May 2004 08:20:31 +0000 (08:20 +0000)
committerPaolo Bonzini <bonzini@gcc.gnu.org>
Tue, 4 May 2004 08:20:31 +0000 (08:20 +0000)
2004-05-04  Paolo Bonzini  <bonzini@gnu.org>

* ggc-zone.c (ggc_alloc_zone_1): Add MEM_STAT_DECL parameter.
Collect overhead information.
(ggc_alloc_stat): New name of ggc_alloc.  Add MEM_STAT_DECL
parameter and pass it through.
(ggc_alloc_typed_stat): New name of ggc_alloc_typed.  Add
MEM_STAT_DECL parameter and pass it through.
(ggc_alloc_zone_stat): New name of ggc_alloc_zone.  Add
MEM_STAT_DECL parameter and pass it through.

From-SVN: r81472

gcc/ChangeLog
gcc/ggc-zone.c

index f98f7cd328731519dd1e486f40f421159483a5cf..66d5ac4ee0776e25fbd85794615cfbaca778b842 100644 (file)
@@ -1,3 +1,14 @@
+2004-05-04  Paolo Bonzini  <bonzini@gnu.org>
+
+       * ggc-zone.c (ggc_alloc_zone_1): Add MEM_STAT_DECL parameter.
+       Collect overhead information.
+       (ggc_alloc_stat): New name of ggc_alloc.  Add MEM_STAT_DECL
+       parameter and pass it through.
+       (ggc_alloc_typed_stat): New name of ggc_alloc_typed.  Add
+       MEM_STAT_DECL parameter and pass it through.
+       (ggc_alloc_zone_stat): New name of ggc_alloc_zone.  Add
+       MEM_STAT_DECL parameter and pass it through.
+
 2004-05-03  Aldy Hernandez  <aldyh@redhat.com>
 
        * config/rs6000/rs6000-protos.h: Protoize rs6000_hard_regno_nregs.
index afdead25b169b40ae6413ce9f35633a07ad76850..da58116fabba410ef0d57519777addedb4d798bf 100644 (file)
@@ -327,7 +327,7 @@ static void free_chunk (struct alloc_chunk *, size_t, struct alloc_zone *);
 static void free_page (struct page_entry *);
 static void release_pages (struct alloc_zone *);
 static void sweep_pages (struct alloc_zone *);
-static void * ggc_alloc_zone_1 (size_t, struct alloc_zone *, short);
+static void * ggc_alloc_zone_1 (size_t, struct alloc_zone *, short MEM_STAT_DECL);
 static bool ggc_collect_1 (struct alloc_zone *, bool);
 static void check_cookies (void);
 
@@ -569,7 +569,8 @@ free_chunk (struct alloc_chunk *chunk, size_t size, struct alloc_zone *zone)
 /* Allocate a chunk of memory of SIZE bytes.  */
 
 static void *
-ggc_alloc_zone_1 (size_t size, struct alloc_zone *zone, short type)
+ggc_alloc_zone_1 (size_t size, struct alloc_zone *zone, short type
+                 MEM_STAT_DECL)
 {
   size_t bin = 0;
   size_t lsize = 0;
@@ -659,7 +660,12 @@ ggc_alloc_zone_1 (size_t size, struct alloc_zone *zone, short type)
       lchunk->size = lsize;
       lchunk->large = 0;
       free_chunk (lchunk, lsize, zone);
+      lsize = 0;
     }
+#ifdef GATHER_STATISTICS
+  ggc_record_overhead (size, lsize PASS_MEM_STAT);
+#endif
+
   /* Calculate the object's address.  */
  found:
 #ifdef COOKIE_CHECKING
@@ -701,38 +707,39 @@ ggc_alloc_zone_1 (size_t size, struct alloc_zone *zone, short type)
    for that type.  */
 
 void *
-ggc_alloc_typed (enum gt_types_enum gte, size_t size)
+ggc_alloc_typed_stat (enum gt_types_enum gte, size_t size
+                     MEM_STAT_DECL)
 {
   switch (gte)
     {
     case gt_ggc_e_14lang_tree_node:
-      return ggc_alloc_zone_1 (size, tree_zone, gte);
+      return ggc_alloc_zone_1 (size, tree_zone, gte PASS_MEM_STAT);
 
     case gt_ggc_e_7rtx_def:
-      return ggc_alloc_zone_1 (size, rtl_zone, gte);
+      return ggc_alloc_zone_1 (size, rtl_zone, gte PASS_MEM_STAT);
 
     case gt_ggc_e_9rtvec_def:
-      return ggc_alloc_zone_1 (size, rtl_zone, gte);
+      return ggc_alloc_zone_1 (size, rtl_zone, gte PASS_MEM_STAT);
 
     default:
-      return ggc_alloc_zone_1 (size, &main_zone, gte);
+      return ggc_alloc_zone_1 (size, &main_zone, gte PASS_MEM_STAT);
     }
 }
 
 /* Normal ggc_alloc simply allocates into the main zone.  */
 
 void *
-ggc_alloc (size_t size)
+ggc_alloc_stat (size_t size MEM_STAT_DECL)
 {
-  return ggc_alloc_zone_1 (size, &main_zone, -1);
+  return ggc_alloc_zone_1 (size, &main_zone, -1 PASS_MEM_STAT);
 }
 
 /* Zone allocation allocates into the specified zone.  */
 
 void *
-ggc_alloc_zone (size_t size, struct alloc_zone *zone)
+ggc_alloc_zone_stat (size_t size, struct alloc_zone *zone MEM_STAT_DECL)
 {
-  return ggc_alloc_zone_1 (size, zone, -1);
+  return ggc_alloc_zone_1 (size, zone, -1 PASS_MEM_STAT);
 }
 
 /* Poison the chunk.  */