GCC Middle and Back End API Reference
globals Struct Reference
Collaboration diagram for globals:

Data Fields

page_entrypages [NUM_ORDERS]
page_entrypage_tails [NUM_ORDERS]
page_table lookup
size_t pagesize
size_t lg_pagesize
size_t allocated
size_t allocated_last_gc
size_t bytes_mapped
unsigned long context_depth_allocations
unsigned long context_depth_collections
unsigned short context_depth
page_entryfree_pages
page_grouppage_groups
FILE * debug_file
unsigned int depth_in_use
unsigned int depth_max
unsigned int * depth
unsigned int by_depth_in_use
unsigned int by_depth_max
page_entry ** by_depth
unsigned long ** save_in_use
struct {
   unsigned long long   total_allocated
   unsigned long long   total_overhead
   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
   unsigned long long   total_allocated_per_order [NUM_ORDERS]
   unsigned long long   total_overhead_per_order [NUM_ORDERS]
stats

Detailed Description

The rest of the global variables.


Field Documentation

size_t globals::allocated

Bytes currently allocated.

Referenced by gt_ggc_m_S().

size_t globals::allocated_last_gc

Bytes currently allocated at the end of the last collection.

page_entry** globals::by_depth

Each element of this array is a pointer to a page_entry, all page_entries can be found in here by increasing depth. index_by_depth in the page_entry is the index into this data structure where that page_entry can be found. This is used to speed up finding all page_entries at a particular depth.

unsigned int globals::by_depth_in_use

Current number of elements in use in by_depth below.

unsigned int globals::by_depth_max

Maximum number of elements that can be used before resizing.

size_t globals::bytes_mapped

Total amount of memory mapped.

Referenced by debug_print_page_list(), and lookup_page_table_entry().

unsigned short globals::context_depth

The current depth in the context stack.

Referenced by clear_marks(), compute_inverse(), and sweep_pages().

unsigned long globals::context_depth_allocations

Bit N set if any allocations have been done at context depth N.

unsigned long globals::context_depth_collections

Bit N set if any collections have been done at context depth N.

FILE* globals::debug_file

The file descriptor for debugging output.

Referenced by gt_ggc_m_S().

unsigned int* globals::depth

Each element of this array is an index in by_depth where the given depth starts. This structure is indexed by that given depth we are interested in.

unsigned int globals::depth_in_use

Current number of elements in use in depth below.

unsigned int globals::depth_max

Maximum number of elements that can be used before resizing.

page_entry* globals::free_pages

A file descriptor open to /dev/zero for reading. A cache of free system pages.

Referenced by debug_print_page_list().

size_t globals::lg_pagesize

Referenced by set_page_group_in_use().

page_table globals::lookup

Lookup table for associating allocation pages with object addresses.

Referenced by push_depth().

page_group* globals::page_groups
page_entry* globals::page_tails[NUM_ORDERS]

The Nth element in this array is the last page with objects of size 2^N. NULL if there are no page-entries for this object size.

Referenced by gt_ggc_mx().

page_entry* globals::pages[NUM_ORDERS]

The Nth element in this array is a page with objects of size 2^N. If there are any pages with free objects, they will be at the head of the list. NULL if there are no page-entries for this object size.

Referenced by clear_marks(), and gt_ggc_mx().

size_t globals::pagesize
unsigned long** globals::save_in_use

Each element is a pointer to the saved in_use_p bits, if any, zero otherwise. We allocate them all together, to enable a better runtime data access pattern.

struct { ... } globals::stats
unsigned long long globals::total_allocated

Total GC-allocated memory.

unsigned long long globals::total_allocated_per_order[NUM_ORDERS]

The allocations for each of the allocation orders.

unsigned long long globals::total_allocated_under128
unsigned long long globals::total_allocated_under32

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 globals::total_allocated_under64
unsigned long long globals::total_overhead

Total overhead for GC-allocated memory.

unsigned long long globals::total_overhead_per_order[NUM_ORDERS]

The overhead for each of the allocation orders.

unsigned long long globals::total_overhead_under128
unsigned long long globals::total_overhead_under32
unsigned long long globals::total_overhead_under64

The documentation for this struct was generated from the following file: