#include "config.h"#include "system.h"#include "coretypes.h"#include "tm.h"#include "tree.h"#include "rtl.h"#include "tm_p.h"#include "toplev.h"#include "flags.h"#include "ggc.h"#include "timevar.h"#include "params.h"#include "tree-flow.h"

Go to the source code of this file.
| #define BITMAP_SIZE | ( | Num_objects | ) | (CEIL ((Num_objects), HOST_BITS_PER_LONG) * sizeof(long)) |
Definition at line 455 of file ggc-page.c.
| #define DIV_MULT | ( | ORDER | ) | inverse_table[ORDER].mult |
Definition at line 167 of file ggc-page.c.
| #define DIV_SHIFT | ( | ORDER | ) | inverse_table[ORDER].shift |
Definition at line 168 of file ggc-page.c.
| #define GGC_DEBUG_LEVEL (0) |
Definition at line 113 of file ggc-page.c.
| #define GGC_QUIRE_SIZE 16 |
Definition at line 467 of file ggc-page.c.
| #define HOST_BITS_PER_PTR HOST_BITS_PER_LONG |
Definition at line 116 of file ggc-page.c.
| #define INITIAL_PTE_COUNT 128 |
Definition at line 472 of file ggc-page.c.
Definition at line 147 of file ggc-page.c.
Definition at line 150 of file ggc-page.c.
| #define MAX_ALIGNMENT (offsetof (struct max_alignment, u)) |
Definition at line 214 of file ggc-page.c.
| #define NUM_EXTRA_ORDERS ARRAY_SIZE (extra_order_size_table) |
Definition at line 175 of file ggc-page.c.
| #define NUM_ORDERS (HOST_BITS_PER_PTR + NUM_EXTRA_ORDERS) |
Definition at line 198 of file ggc-page.c.
| #define OBJECT_SIZE | ( | ORDER | ) | object_size_table[ORDER] |
Definition at line 161 of file ggc-page.c.
Definition at line 158 of file ggc-page.c.
Referenced by clear_marks(), ggc_print_statistics(), ggc_recalculate_in_use_p(), and sweep_pages().
| #define OBJECTS_PER_PAGE | ( | ORDER | ) | objects_per_page_table[ORDER] |
Definition at line 155 of file ggc-page.c.
Definition at line 169 of file ggc-page.c.
| #define PAGE_L1_BITS (8) |
Definition at line 142 of file ggc-page.c.
| #define PAGE_L1_SIZE ((size_t) 1 << PAGE_L1_BITS) |
Definition at line 144 of file ggc-page.c.
| #define PAGE_L2_BITS (32 - PAGE_L1_BITS - G.lg_pagesize) |
Definition at line 143 of file ggc-page.c.
| #define PAGE_L2_SIZE ((size_t) 1 << PAGE_L2_BITS) |
Definition at line 145 of file ggc-page.c.
| #define poison_pages | ( | ) |
Definition at line 533 of file ggc-page.c.
Definition at line 223 of file ggc-page.c.
| #define RTL_SIZE | ( | NSLOTS | ) | (RTX_HDR_SIZE + (NSLOTS) * sizeof (rtunion)) |
Definition at line 177 of file ggc-page.c.
| #define save_in_use_p | ( | __p | ) | (save_in_use_p_i (__p->index_by_depth)) |
Definition at line 540 of file ggc-page.c.
| #define save_in_use_p_i | ( | __i | ) | (G.save_in_use[__i]) |
Definition at line 538 of file ggc-page.c.
| #define SCALE | ( | x | ) |
| #define STAT_LABEL | ( | x | ) | ((x) < 1024*10 ? ' ' : ((x) < 1024*1024*10 ? 'k' : 'M')) |
Definition at line 180 of file ggc-page.c.
| #define USING_MALLOC_PAGE_GROUPS |
Definition at line 75 of file ggc-page.c.
| #define VALGRIND_DISCARD | ( | x | ) |
Definition at line 45 of file ggc-page.c.
| #define validate_free_objects | ( | ) |
| typedef page_entry** page_table[PAGE_L1_SIZE] |
Definition at line 314 of file ggc-page.c.
| static struct page_entry * alloc_page | ( | unsigned | order | ) | [static, read] |
Definition at line 718 of file ggc-page.c.
References a, page_group::alloc_size, page_group::allocation, BITMAP_SIZE, page_entry::bytes, page_entry::context_depth, enda, f, fprintf(), free(), G, gcc_assert, GGC_DEBUG_LEVEL, GGC_QUIRE_SIZE, page_entry::group, HOST_BITS_PER_LONG, i, page_group::in_use, page_entry::in_use_p, long, memset, page_entry::next, page_group::next, page_entry::next_bit_hint, NULL, page_entry::num_free_objects, OBJECT_SIZE, OBJECTS_PER_PAGE, page_entry::order, page_entry::page, set_page_group_in_use(), set_page_table_entry(), size_t, USING_MALLOC_PAGE_GROUPS, xcalloc(), and xmalloc().
Definition at line 1683 of file ggc-page.c.
References BITMAP_SIZE, page_entry::context_depth, G, gcc_assert, HOST_BITS_PER_LONG, page_entry::in_use_p, long, memcpy, memset, page_entry::next, NULL, page_entry::num_free_objects, NUM_ORDERS, OBJECTS_IN_PAGE, page_entry::page, save_in_use_p, and xmalloc().
| static void clear_page_group_in_use | ( | page_group * | group, | |
| char * | page | |||
| ) | [inline, static] |
Definition at line 707 of file ggc-page.c.
References page_group::allocation, page_group::in_use, and page_group_index().
| static void compute_inverse | ( | unsigned | order | ) | [static] |
| void debug_print_page_list | ( | int | order | ) |
Definition at line 571 of file ggc-page.c.
| void destroy_ggc_zone | ( | struct alloc_zone *zone | ATTRIBUTE_UNUSED | ) |
Definition at line 1545 of file ggc-page.c.
| static void free_page | ( | struct page_entry * | entry | ) | [static] |
Definition at line 919 of file ggc-page.c.
References adjust_depth(), clear_page_group_in_use(), page_entry::context_depth, fprintf(), G, gcc_assert, GGC_DEBUG_LEVEL, i, page_entry::index_by_depth, NULL, page_entry::page, set_page_table_entry(), top, and VALGRIND_DISCARD.
Definition at line 1067 of file ggc-page.c.
References alloc_page(), page_entry::context_depth, fprintf(), G, GGC_DEBUG_LEVEL, ggc_record_overhead(), HOST_BITS_PER_LONG, page_entry::in_use_p, page_entry::index_by_depth, long, memset, page_entry::next, page_entry::next_bit_hint, NULL, page_entry::num_free_objects, OBJECT_SIZE, page_entry::page, PASS_MEM_STAT, page_entry::prev, push_by_depth(), push_depth(), result, and VALGRIND_DISCARD.
| void* ggc_alloc_typed_stat | ( | enum gt_types_enum type | ATTRIBUTE_UNUSED, | |
| size_t size | MEM_STAT_DECL | |||
| ) |
| void* ggc_alloc_zone_stat | ( | size_t | size, | |
| struct alloc_zone *zone ATTRIBUTE_UNUSED | MEM_STAT_DECL | |||
| ) |
| static int ggc_allocated_p | ( | const void * | p | ) | [inline, static] |
Definition at line 1950 of file ggc-page.c.
References clear_marks(), fprintf(), G, GGC_DEBUG_LEVEL, ggc_force_collect, ggc_mark_roots(), ggc_prune_overhead_list(), MAX, PARAM_VALUE, poison_pages, quiet_flag, release_pages(), sweep_pages(), timevar_pop, timevar_push, and validate_free_objects.
Definition at line 1327 of file ggc-page.c.
References fprintf(), G, GGC_DEBUG_LEVEL, ggc_free_overhead(), HOST_BITS_PER_LONG, lookup_page_table_entry(), memset, page_entry::next, NULL, page_entry::num_free_objects, OBJECT_SIZE, OFFSET_TO_BIT, page_entry::order, pe, page_entry::prev, q, VALGRIND_DISCARD, and xmalloc().
Definition at line 1318 of file ggc-page.c.
| int ggc_marked_p | ( | const void * | p | ) |
Definition at line 1295 of file ggc-page.c.
| char* ggc_pch_alloc_object | ( | struct ggc_pch_data * | d, | |
| void *x | ATTRIBUTE_UNUSED, | |||
| size_t | size, | |||
| bool is_string | ATTRIBUTE_UNUSED | |||
| ) |
Definition at line 2164 of file ggc-page.c.
References ggc_pch_data::base, OBJECT_SIZE, and result.
Referenced by call_alloc().
| void ggc_pch_count_object | ( | struct ggc_pch_data * | d, | |
| void *x | ATTRIBUTE_UNUSED, | |||
| size_t | size, | |||
| bool is_string | ATTRIBUTE_UNUSED | |||
| ) |
Definition at line 2121 of file ggc-page.c.
References ggc_pch_data::d, OBJECT_SIZE, and ggc_pch_data::ggc_pch_ondisk::totals.
Referenced by call_count().
| void ggc_pch_finish | ( | struct ggc_pch_data * | d, | |
| FILE * | f | |||
| ) |
| void ggc_pch_this_base | ( | struct ggc_pch_data * | d, | |
| void * | base | |||
| ) |
| size_t ggc_pch_total_size | ( | struct ggc_pch_data * | d | ) |
| void ggc_pch_write_object | ( | struct ggc_pch_data *d | ATTRIBUTE_UNUSED, | |
| FILE * | f, | |||
| void * | x, | |||
| void *newx | ATTRIBUTE_UNUSED, | |||
| size_t | size, | |||
| bool is_string | ATTRIBUTE_UNUSED | |||
| ) |
Definition at line 2192 of file ggc-page.c.
References d, fatal_error(), fseek, fwrite, G, OBJECT_SIZE, ROUND_UP_VALUE, and SEEK_CUR.
Referenced by gt_pch_save().
Definition at line 1601 of file ggc-page.c.
References adjust_depth(), page_entry::context_depth, free(), G, gcc_assert, ggc_recalculate_in_use_p(), i, page_entry::index_by_depth, long, page_entry::next, NULL, NUM_ORDERS, prefetch, save_in_use_p, and save_in_use_p_i.
Definition at line 2008 of file ggc-page.c.
References BITMAP_SIZE, page_entry::bytes, fprintf(), G, ggc_print_common_statistics(), memset, page_entry::next, page_entry::num_free_objects, OBJECT_SIZE, OBJECTS_IN_PAGE, release_pages(), SCALE, and STAT_LABEL.
| static void ggc_recalculate_in_use_p | ( | page_entry * | p | ) | [static] |
Definition at line 1565 of file ggc-page.c.
References BITMAP_SIZE, CEIL, gcc_assert, i, page_entry::in_use_p, page_entry::num_free_objects, OBJECTS_IN_PAGE, and save_in_use_p.
| int ggc_set_mark | ( | const void * | p | ) |
Definition at line 1259 of file ggc-page.c.
Definition at line 1444 of file ggc-page.c.
References page_entry::bytes, compute_inverse(), exact_log2, extra_order_size_table, fopen, G, gcc_assert, getpagesize, HOST_BITS_PER_PTR, i, INITIAL_PTE_COUNT, internal_error(), MAX_ALIGNMENT, page_entry::next, NULL, NUM_ORDERS, o, O_RDONLY, OBJECT_SIZE, open, page_entry::page, ROUND_UP, s, xcalloc(), and xmalloc().
| struct ggc_pch_data* init_ggc_pch | ( | void | ) | [read] |
| static page_entry * lookup_page_table_entry | ( | const void * | p | ) | [inline, static] |
| static void move_ptes_to_front | ( | int | count_old_page_tables, | |
| int | count_new_page_tables | |||
| ) | [static] |
Definition at line 2255 of file ggc-page.c.
References free(), G, page_entry::index_by_depth, memcpy, push_depth(), and xmalloc().
Referenced by ggc_pch_read().
| struct alloc_zone* new_ggc_zone | ( | const char *name | ATTRIBUTE_UNUSED | ) | [read] |
Definition at line 1538 of file ggc-page.c.
References NULL.
Referenced by ggc_pch_read(), and init_ggc().
| static size_t page_group_index | ( | char * | allocation, | |
| char * | page | |||
| ) | [inline, static] |
| static void push_by_depth | ( | page_entry * | p, | |
| unsigned long * | s | |||
| ) | [inline, static] |
| static void push_depth | ( | unsigned int | i | ) | [inline, static] |
Definition at line 961 of file ggc-page.c.
References page_group::alloc_size, page_group::allocation, page_entry::bytes, free(), G, g, page_entry::group, page_group::in_use, len, munmap(), page_entry::next, next, page_group::next, NULL, page_entry::page, and start.
| static void set_page_group_in_use | ( | page_group * | group, | |
| char * | page | |||
| ) | [inline, static] |
Definition at line 701 of file ggc-page.c.
References page_group::allocation, page_group::in_use, and page_group_index().
| static void set_page_table_entry | ( | void * | p, | |
| page_entry * | entry | |||
| ) | [static] |
Definition at line 1725 of file ggc-page.c.
References page_entry::context_depth, free_page(), G, ggc_recalculate_in_use_p(), last, page_entry::next, next, NULL, page_entry::num_free_objects, NUM_ORDERS, OBJECT_SIZE, OBJECTS_IN_PAGE, and page_entry::prev.
const size_t extra_order_size_table[] [static] |
Initial value:
{
sizeof (struct stmt_ann_d),
sizeof (struct tree_decl),
sizeof (struct tree_list),
TREE_EXP_SIZE (2),
RTL_SIZE (2),
RTL_SIZE (9),
}
Definition at line 187 of file ggc-page.c.
| struct alloc_zone* garbage_zone = NULL |
Definition at line 500 of file ggc-page.c.
struct { ... }
inverse_table[NUM_ORDERS] [static] |
Definition at line 239 of file ggc-page.c.
size_t object_size_table[NUM_ORDERS] [static] |
Definition at line 231 of file ggc-page.c.
unsigned objects_per_page_table[NUM_ORDERS] [static] |
Definition at line 227 of file ggc-page.c.
| struct alloc_zone* rtl_zone = NULL |
Definition at line 498 of file ggc-page.c.
| unsigned int shift |
Definition at line 240 of file ggc-page.c.
unsigned char size_lookup[257] [static] |
Initial value:
{
3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4,
4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8
}
Definition at line 1025 of file ggc-page.c.
| struct alloc_zone* tree_zone = NULL |
Definition at line 499 of file ggc-page.c.
Referenced by build1_stat(), copy_node_stat(), ggc_alloc_typed_stat(), init_ggc(), make_node_stat(), make_tree_binfo_stat(), make_tree_vec_stat(), and tree_cons_stat().
1.5.6