Index: gcc/gcc/ggc-zone.c |
diff --git a/gcc/gcc/ggc-zone.c b/gcc/gcc/ggc-zone.c |
index 5031a01b404b58f81b37775647ea518c9f0c3740..cae23e128deb4d184a13d049a37a9021d138f87d 100644 |
--- a/gcc/gcc/ggc-zone.c |
+++ b/gcc/gcc/ggc-zone.c |
@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3. If not see |
#include "timevar.h" |
#include "params.h" |
#include "bitmap.h" |
+#include "plugin.h" |
/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a |
file open. Prefer either to valloc. */ |
@@ -425,13 +426,13 @@ struct alloc_zone |
/* Total allocations and overhead for sizes less than 32, 64 and 128. |
These sizes are interesting because they are typical cache line |
sizes. */ |
- |
+ |
unsigned long long total_allocated_under32; |
unsigned long long total_overhead_under32; |
- |
+ |
unsigned long long total_allocated_under64; |
unsigned long long total_overhead_under64; |
- |
+ |
unsigned long long total_allocated_under128; |
unsigned long long total_overhead_under128; |
} stats; |
@@ -1314,7 +1315,7 @@ ggc_alloc_zone_stat (size_t orig_size, struct alloc_zone *zone |
/* Keep track of how many bytes are being allocated. This |
information is used in deciding when to collect. */ |
zone->allocated += size; |
- |
+ |
timevar_ggc_mem_total += size; |
#ifdef GATHER_STATISTICS |
@@ -1520,7 +1521,7 @@ ggc_set_mark (const void *p) |
offset = (ptr - pch_zone.page) / BYTES_PER_MARK_BIT; |
mark_word = offset / (8 * sizeof (mark_type)); |
mark_bit = offset % (8 * sizeof (mark_type)); |
- |
+ |
if (pch_zone.mark_bits[mark_word] & (1 << mark_bit)) |
return 1; |
pch_zone.mark_bits[mark_word] |= (1 << mark_bit); |
@@ -1570,7 +1571,7 @@ ggc_marked_p (const void *p) |
offset = (ptr - pch_zone.page) / BYTES_PER_MARK_BIT; |
mark_word = offset / (8 * sizeof (mark_type)); |
mark_bit = offset % (8 * sizeof (mark_type)); |
- |
+ |
return (pch_zone.mark_bits[mark_word] & (1 << mark_bit)) != 0; |
} |
@@ -1962,7 +1963,7 @@ ggc_collect_1 (struct alloc_zone *zone, bool need_marking) |
ggc_prune_overhead_list (); |
#endif |
} |
- |
+ |
sweep_pages (zone); |
zone->was_collected = true; |
zone->allocated_last_gc = zone->allocated; |
@@ -2029,6 +2030,8 @@ ggc_collect (void) |
} |
} |
+ invoke_plugin_callbacks (PLUGIN_GGC_START, NULL); |
+ |
/* Start by possibly collecting the main zone. */ |
main_zone.was_collected = false; |
marked |= ggc_collect_1 (&main_zone, true); |
@@ -2093,6 +2096,8 @@ ggc_collect (void) |
} |
} |
+ invoke_plugin_callbacks (PLUGIN_GGC_END, NULL); |
+ |
timevar_pop (TV_GC); |
} |
@@ -2173,7 +2178,7 @@ ggc_print_statistics (void) |
chunk = chunk->next_free; |
} |
} |
- |
+ |
fprintf (stderr, "%20s %10lu%c %10lu%c %10lu%c\n", |
zone->name, |
SCALE (allocated), LABEL (allocated), |
@@ -2216,7 +2221,7 @@ ggc_print_statistics (void) |
SCALE (total_allocated), LABEL(total_allocated), |
SCALE (total_overhead), LABEL (total_overhead)); |
-#ifdef GATHER_STATISTICS |
+#ifdef GATHER_STATISTICS |
{ |
unsigned long long all_overhead = 0, all_allocated = 0; |
unsigned long long all_overhead_under32 = 0, all_allocated_under32 = 0; |
@@ -2235,7 +2240,7 @@ ggc_print_statistics (void) |
all_allocated_under64 += zone->stats.total_allocated_under64; |
all_overhead_under64 += zone->stats.total_overhead_under64; |
- |
+ |
all_allocated_under128 += zone->stats.total_allocated_under128; |
all_overhead_under128 += zone->stats.total_overhead_under128; |