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
int dev_zero_fd
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 free_objectfree_object_list
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 alloc_anon(), 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.  
int globals::dev_zero_fd
     A file descriptor open to /dev/zero for reading.  

Referenced by lookup_page_table_entry().

struct free_object* globals::free_object_list
     List of free objects to be verified as actually free on the
     next collection.  

Referenced by gt_ggc_m_S(), and sweep_pages().

page_entry* globals::free_pages
     A cache of free system pages.  
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: