#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 466 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 478 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 483 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 225 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 209 of file ggc-page.c.
| #define NUM_SIZE_LOOKUP 512 |
Definition at line 1032 of file ggc-page.c.
Referenced by ggc_alloc_stat(), ggc_pch_alloc_object(), ggc_pch_count_object(), ggc_pch_write_object(), and init_ggc().
| #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.
| #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 1829 of file ggc-page.c.
Definition at line 541 of file ggc-page.c.
Definition at line 234 of file ggc-page.c.
Definition at line 230 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 548 of file ggc-page.c.
| #define save_in_use_p_i | ( | __i | ) | (G.save_in_use[__i]) |
Definition at line 546 of file ggc-page.c.
| #define SCALE | ( | x | ) |
| #define STAT_LABEL | ( | x | ) | ((x) < 1024*10 ? ' ' : ((x) < 1024*1024*10 ? 'k' : 'M')) |
Definition at line 1930 of file ggc-page.c.
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 | ( | ) |
Definition at line 1869 of file ggc-page.c.
| typedef page_entry** page_table[PAGE_L1_SIZE] |
Definition at line 325 of file ggc-page.c.
| static struct page_entry * alloc_page | ( | unsigned | order | ) | [static, read] |
Definition at line 726 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 1608 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 715 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.
References page_entry::context_depth, fflush(), G, NULL, p, printf(), and PTR.
| void destroy_ggc_zone | ( | struct alloc_zone *zone | ATTRIBUTE_UNUSED | ) |
Definition at line 1565 of file ggc-page.c.
| static void free_page | ( | struct page_entry * | entry | ) | [static] |
Definition at line 927 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 1081 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, NUM_SIZE_LOOKUP, OBJECT_SIZE, page_entry::page, PASS_MEM_STAT, page_entry::prev, push_by_depth(), push_depth(), result, timevar_ggc_mem_total, and VALGRIND_DISCARD.
| void* ggc_alloc_typed_stat | ( | enum gt_types_enum type | ATTRIBUTE_UNUSED, | |
| size_t size | MEM_STAT_DECL | |||
| ) |
| static int ggc_allocated_p | ( | const void * | p | ) | [inline, static] |
Definition at line 1875 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 1344 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 XNEW.
Definition at line 1335 of file ggc-page.c.
References lookup_page_table_entry(), OBJECT_SIZE, page_entry::order, and pe.
| int ggc_marked_p | ( | const void * | p | ) |
Definition at line 1312 of file ggc-page.c.
References gcc_assert, HOST_BITS_PER_LONG, page_entry::in_use_p, long, lookup_page_table_entry(), OFFSET_TO_BIT, page_entry::order, and page_entry::page.
| char* ggc_pch_alloc_object | ( | struct ggc_pch_data * | d, | |
| void *x | ATTRIBUTE_UNUSED, | |||
| size_t | size, | |||
| bool is_string | ATTRIBUTE_UNUSED, | |||
| enum gt_types_enum type | ATTRIBUTE_UNUSED | |||
| ) |
Definition at line 2090 of file ggc-page.c.
References ggc_pch_data::base, NUM_SIZE_LOOKUP, OBJECT_SIZE, and result.
| void ggc_pch_count_object | ( | struct ggc_pch_data * | d, | |
| void *x | ATTRIBUTE_UNUSED, | |||
| size_t | size, | |||
| bool is_string | ATTRIBUTE_UNUSED, | |||
| enum gt_types_enum type | ATTRIBUTE_UNUSED | |||
| ) |
Definition at line 2046 of file ggc-page.c.
References ggc_pch_data::d, NUM_SIZE_LOOKUP, OBJECT_SIZE, and ggc_pch_data::ggc_pch_ondisk::totals.
| void ggc_pch_finish | ( | struct ggc_pch_data * | d, | |
| FILE * | f | |||
| ) |
Definition at line 2171 of file ggc-page.c.
References ggc_pch_data::d, fatal_error(), free(), and fwrite.
Definition at line 2112 of file ggc-page.c.
Definition at line 2229 of file ggc-page.c.
References BITMAP_SIZE, bytes, page_entry::bytes, clear_marks(), page_entry::context_depth, fatal_error(), for(), fread, G, gcc_assert, HOST_BITS_PER_LONG, page_entry::in_use_p, L, move_ptes_to_front(), page_entry::next, NULL, page_entry::num_free_objects, OBJECT_SIZE, page_entry::order, page_entry::page, poison_pages, push_by_depth(), ROUND_UP, set_page_table_entry(), and xcalloc().
| void ggc_pch_this_base | ( | struct ggc_pch_data * | d, | |
| void * | base | |||
| ) |
Definition at line 2076 of file ggc-page.c.
References a, ggc_pch_data::base, ggc_pch_data::d, G, OBJECT_SIZE, ROUND_UP, size_t, and ggc_pch_data::ggc_pch_ondisk::totals.
| size_t ggc_pch_total_size | ( | struct ggc_pch_data * | d | ) |
Definition at line 2065 of file ggc-page.c.
References a, ggc_pch_data::d, G, OBJECT_SIZE, ROUND_UP, and ggc_pch_data::ggc_pch_ondisk::totals.
| 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 2119 of file ggc-page.c.
References d, fatal_error(), fseek, fwrite, G, NUM_SIZE_LOOKUP, OBJECT_SIZE, ROUND_UP_VALUE, and SEEK_CUR.
Definition at line 1933 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 1573 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 1276 of file ggc-page.c.
References fprintf(), G, gcc_assert, GGC_DEBUG_LEVEL, HOST_BITS_PER_LONG, page_entry::in_use_p, long, lookup_page_table_entry(), page_entry::num_free_objects, OFFSET_TO_BIT, page_entry::order, and page_entry::page.
Definition at line 1461 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, NUM_SIZE_LOOKUP, o, O_RDONLY, OBJECT_SIZE, object_size_table, objects_per_page_table, open, page_entry::page, ROUND_UP, s, XCNEW, and XNEWVEC.
| 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 2182 of file ggc-page.c.
References free(), G, page_entry::index_by_depth, memcpy, push_depth(), and XNEWVEC.
| struct alloc_zone* new_ggc_zone | ( | const char *name | ATTRIBUTE_UNUSED | ) | [read] |
| 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 969 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 709 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 1650 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 var_ann_d),
sizeof (struct tree_decl_non_common),
sizeof (struct tree_field_decl),
sizeof (struct tree_parm_decl),
sizeof (struct tree_var_decl),
sizeof (struct tree_list),
sizeof (struct tree_ssa_name),
sizeof (struct function),
sizeof (struct basic_block_def),
sizeof (bitmap_element),
sizeof (struct tree_phi_node) + sizeof (struct phi_arg_d) * 3,
TREE_EXP_SIZE (2),
RTL_SIZE (2),
RTL_SIZE (9),
}
Definition at line 187 of file ggc-page.c.
struct { ... }
inverse_table[NUM_ORDERS] [static] |
Definition at line 250 of file ggc-page.c.
size_t object_size_table[NUM_ORDERS] [static] |
Definition at line 242 of file ggc-page.c.
unsigned objects_per_page_table[NUM_ORDERS] [static] |
Definition at line 238 of file ggc-page.c.
| unsigned int shift |
Definition at line 251 of file ggc-page.c.
unsigned char size_lookup[NUM_SIZE_LOOKUP] [static] |
Definition at line 1033 of file ggc-page.c.
1.5.6