GCC Middle and Back End API Reference
ggc.h File Reference
#include "gtype-desc.h"
Include dependency graph for ggc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ggc_root_tab
 

Macros

#define LAST_GGC_ROOT_TAB   { NULL, 0, 0, NULL, NULL }
 
#define ggc_test_and_set_mark(EXPR)    ((EXPR) != NULL && ((void *) (EXPR)) != (void *) 1 && ! ggc_set_mark (EXPR))
 
#define ggc_mark(EXPR)
 
#define GGC_RESIZEVEC(T, P, N)    ((T *) ggc_realloc ((P), (N) * sizeof (T) MEM_STAT_INFO))
 
#define ggc_strdup(S)   ggc_alloc_string ((S), -1 MEM_STAT_INFO)
 
#define ggc_alloc_rtvec_sized(NELT)
 

Typedefs

typedef void(* gt_note_pointers) (void *, void *, gt_pointer_operator, void *)
 
typedef void(* gt_handle_reorder) (void *, void *, gt_pointer_operator, void *)
 
typedef void(* gt_pointer_walker) (void *)
 

Enumerations

enum  ggc_collect { GGC_COLLECT_HEURISTIC , GGC_COLLECT_FORCE }
 

Functions

int gt_pch_note_object (void *, void *, gt_note_pointers, size_t length_override=(size_t) -1)
 
void gt_pch_note_callback (void *, void *)
 
void gt_pch_note_reorder (void *, void *, gt_handle_reorder)
 
void gt_clear_caches ()
 
bool ggc_set_mark (const void *)
 
bool ggc_marked_p (const void *)
 
void gt_pch_n_S (const void *)
 
void gt_pch_n_S2 (const void *, size_t)
 
void gt_ggc_m_S (const void *)
 
void init_stringpool (void)
 
void init_ggc (void)
 
void gt_pch_save (FILE *f)
 
void * ggc_internal_alloc (size_t, void(*)(void *), size_t, size_t CXX_MEM_STAT_INFO) ATTRIBUTE_MALLOC
 
void * ggc_internal_alloc (size_t s CXX_MEM_STAT_INFO)
 
size_t ggc_round_alloc_size (size_t requested_size)
 
void * ggc_internal_cleared_alloc (size_t, void(*)(void *), size_t, size_t CXX_MEM_STAT_INFO) ATTRIBUTE_MALLOC
 
void * ggc_internal_cleared_alloc (size_t s CXX_MEM_STAT_INFO)
 
void * ggc_realloc (void *, size_t CXX_MEM_STAT_INFO)
 
void ggc_free (void *)
 
void dump_ggc_loc_statistics ()
 
template<typename T >
void finalize (void *p)
 
template<typename T >
bool need_finalization_p ()
 
template<typename T >
Tggc_alloc (ALONE_CXX_MEM_STAT_INFO)
 
template<typename T >
Tggc_alloc_no_dtor (ALONE_CXX_MEM_STAT_INFO)
 
template<typename T >
Tggc_cleared_alloc (ALONE_CXX_MEM_STAT_INFO)
 
template<typename T >
Tggc_vec_alloc (size_t c CXX_MEM_STAT_INFO)
 
template<typename T >
Tggc_cleared_vec_alloc (size_t c CXX_MEM_STAT_INFO)
 
void * ggc_alloc_atomic (size_t s CXX_MEM_STAT_INFO)
 
template<typename T >
void ggc_delete (T *ptr)
 
const char * ggc_alloc_string (const char *contents, int length CXX_MEM_STAT_INFO)
 
void ggc_collect (enum ggc_collect mode=GGC_COLLECT_HEURISTIC)
 
void ggc_trim (void)
 
void ggc_grow (void)
 
void ggc_register_root_tab (const struct ggc_root_tab *)
 
void gt_pch_restore (FILE *f)
 
void ggc_print_statistics (void)
 
void stringpool_statistics (void)
 
void init_ggc_heuristics (void)
 
void report_heap_memory_use (void)
 
struct rtx_defggc_alloc_rtx_def_stat (size_t s CXX_MEM_STAT_INFO)
 
union tree_node * ggc_alloc_tree_node_stat (size_t s CXX_MEM_STAT_INFO)
 
union tree_node * ggc_alloc_cleared_tree_node_stat (size_t s CXX_MEM_STAT_INFO)
 
gimpleggc_alloc_cleared_gimple_statement_stat (size_t s CXX_MEM_STAT_INFO)
 
void gt_ggc_mx (const char *s)
 
void gt_pch_nx (const char *)
 
void gt_pch_nx (bool)
 
void gt_pch_nx (char)
 
void gt_pch_nx (signed char)
 
void gt_pch_nx (unsigned char)
 
void gt_pch_nx (short)
 
void gt_pch_nx (unsigned short)
 
void gt_pch_nx (int)
 
void gt_pch_nx (unsigned int)
 
void gt_pch_nx (long int)
 
void gt_pch_nx (unsigned long int)
 
void gt_pch_nx (long long int)
 
void gt_pch_nx (unsigned long long int)
 
void gt_ggc_mx (bool)
 
void gt_ggc_mx (char)
 
void gt_ggc_mx (signed char)
 
void gt_ggc_mx (unsigned char)
 
void gt_ggc_mx (short)
 
void gt_ggc_mx (unsigned short)
 
void gt_ggc_mx (int)
 
void gt_ggc_mx (unsigned int)
 
void gt_ggc_mx (long int)
 
void gt_ggc_mx (unsigned long int)
 
void gt_ggc_mx (long long int)
 
void gt_ggc_mx (unsigned long long int)
 
void ggc_common_finalize ()
 

Variables

const struct ggc_root_tab *const gt_ggc_rtab []
 
const struct ggc_root_tab *const gt_ggc_deletable_rtab []
 
const struct ggc_root_tab *const gt_pch_scalar_rtab []
 
bool ggc_protect_identifiers
 

Macro Definition Documentation

◆ ggc_alloc_rtvec_sized

#define ggc_alloc_rtvec_sized ( NELT)
Value:
(rtvec_def *) ggc_internal_alloc (sizeof (struct rtvec_def) \
+ ((NELT) - 1) * sizeof (rtx)) \
struct rtx_def * rtx
Definition coretypes.h:57
void * ggc_internal_alloc(size_t, void(*)(void *), size_t, size_t CXX_MEM_STAT_INFO) ATTRIBUTE_MALLOC
Definition ggc-none.cc:44
Definition rtl.h:735

Referenced by rtvec_alloc().

◆ ggc_mark

#define ggc_mark ( EXPR)
Value:
do { \
const void *const a__ = (EXPR); \
if (a__ != NULL && a__ != (void *) 1) \
ggc_set_mark (a__); \
} while (0)
#define NULL
Definition system.h:50

◆ GGC_RESIZEVEC

#define GGC_RESIZEVEC ( T,
P,
N )    ((T *) ggc_realloc ((P), (N) * sizeof (T) MEM_STAT_INFO))

◆ ggc_strdup

◆ ggc_test_and_set_mark

#define ggc_test_and_set_mark ( EXPR)     ((EXPR) != NULL && ((void *) (EXPR)) != (void *) 1 && ! ggc_set_mark (EXPR))
If EXPR is not NULL and previously unmarked, mark it and evaluate
to true.  Otherwise evaluate to false.   

Referenced by gt_ggc_mx(), gt_ggc_mx(), gt_ggc_mx(), gt_ggc_mx(), gt_ggc_mx(), gt_ggc_mx(), gt_ggc_mx(), gt_ggc_mx(), gt_ggc_mx(), and gt_ggc_mx().

◆ LAST_GGC_ROOT_TAB

#define LAST_GGC_ROOT_TAB   { NULL, 0, 0, NULL, NULL }

Typedef Documentation

◆ gt_handle_reorder

typedef void(* gt_handle_reorder) (void *, void *, gt_pointer_operator, void *)
One of these is called before objects are re-ordered in memory.
The first parameter is the original object, the second is the
subobject that has had its pointers reordered, the third parameter
can compute the new values of a pointer when given the cookie in
the fourth parameter.   

◆ gt_note_pointers

typedef void(* gt_note_pointers) (void *, void *, gt_pointer_operator, void *)
Garbage collection for the GNU compiler.

   Copyright (C) 1998-2024 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   
Symbols are marked with `ggc' for `gcc gc' so as not to interfere with
an external gc library that might be linked in.   
Internal functions and data structures used by the GTY
machinery, including the generated gt*.[hc] files.   
One of these applies its third parameter (with cookie in the fourth
parameter) to each pointer in the object pointed to by the first
parameter, using the second parameter.   

◆ gt_pointer_walker

typedef void(* gt_pointer_walker) (void *)
Mark the object in the first parameter and anything it points to.   

Enumeration Type Documentation

◆ ggc_collect

Invoke the collector.  Garbage collection occurs only when this
function is called, not during allocations.   
Enumerator
GGC_COLLECT_HEURISTIC 
GGC_COLLECT_FORCE 

Function Documentation

◆ dump_ggc_loc_statistics()

void dump_ggc_loc_statistics ( )
extern
Dump per-site memory statistics.   

References GGC_COLLECT_FORCE, ggc_mem_desc, and GGC_ORIGIN.

Referenced by dump_memory_report().

◆ finalize()

template<typename T >
void finalize ( void * p)

◆ ggc_alloc()

template<typename T >
T * ggc_alloc ( ALONE_CXX_MEM_STAT_INFO )
inline

References finalize(), ggc_internal_alloc(), need_finalization_p(), NULL, and PASS_MEM_STAT.

Referenced by add_call_site(), add_frame_space(), assign_stack_temp_for_type(), bitmap_element_allocate(), bitmap_gc_alloc(), build_constant_desc(), build_fixed(), copy_cfa(), copy_cfi_row(), copy_loc_descr(), copy_node(), coverage_end_function(), create_cie_data(), create_constant_pool(), symbol_table::create_edge(), symbol_table::create_empty(), varpool_node::create_empty(), hash_map< KeyId, Value, Traits >::create_ggc(), hash_set< KeyId, Lazy, Traits >::create_ggc(), hash_table< Descriptor, Lazy, Allocator >::create_ggc(), create_specialized_node(), decl_debug_args_insert(), decl_debug_expr_insert(), decl_for_type_insert(), decl_value_expr_insert(), duplicate_ssa_name_ptr_info(), force_const_mem(), general_init(), get_hard_reg_initial_val(), get_noswitch_section(), get_reg_attrs(), get_replacement_map(), get_section(), get_unnamed_section(), gt_pch_save_stringpool(), init_alias_set_entry(), input_node_opt_summary(), modref_tree< T >::insert_base(), modref_base_node< T >::insert_ref(), insert_temp_slot_address(), ipa_get_value_range(), maybe_emit_file(), new_cfi(), new_scev_info_str(), record_control_iv(), record_estimate(), string_concat_db::record_string_concatenation(), record_tm_clone_pair(), record_tm_replacement(), thunk_info::register_early(), rescan_loop_exit(), set_conv_libfunc(), set_mem_attrs(), set_optab_libfunc(), split_bb_make_tm_edge(), start_sequence(), tsi_link_after(), tsi_link_before(), type_hash_canon(), types_used_by_var_decl_insert(), and unpack_ts_fixed_cst_value_fields().

◆ ggc_alloc_atomic()

void * ggc_alloc_atomic ( size_t s CXX_MEM_STAT_INFO)
inline

◆ ggc_alloc_cleared_gimple_statement_stat()

gimple * ggc_alloc_cleared_gimple_statement_stat ( size_t s CXX_MEM_STAT_INFO)
inline

◆ ggc_alloc_cleared_tree_node_stat()

union tree_node * ggc_alloc_cleared_tree_node_stat ( size_t s CXX_MEM_STAT_INFO)

◆ ggc_alloc_no_dtor()

template<typename T >
T * ggc_alloc_no_dtor ( ALONE_CXX_MEM_STAT_INFO )
inline

◆ ggc_alloc_rtx_def_stat()

struct rtx_def * ggc_alloc_rtx_def_stat ( size_t s CXX_MEM_STAT_INFO)
inline
Memory statistics passing versions of some allocators.  Too few of them to
make gengtype produce them, so just define the needed ones here.   

References ggc_internal_alloc(), and PASS_MEM_STAT.

Referenced by rtx_alloc_stat_v(), and shallow_copy_rtx().

◆ ggc_alloc_string()

const char * ggc_alloc_string ( const char * contents,
int length MEM_STAT_DECL )
extern
Allocate a gc-able string, and fill it with LENGTH bytes from CONTENTS.
If LENGTH is -1, then CONTENTS is assumed to be a
null-terminated string and the memory sized accordingly.   
Allocate and return a string constant of length LENGTH, containing
CONTENTS.  If LENGTH is -1, CONTENTS is assumed to be a
nul-terminated string, and the length is calculated using strlen.   

References ggc_alloc_atomic().

Referenced by gen_interclass_conv_libfunc(), gen_intraclass_conv_libfunc(), gen_libfunc(), gimple_build_asm_1(), output_file_names(), and parse_output_constraint().

◆ ggc_alloc_tree_node_stat()

union tree_node * ggc_alloc_tree_node_stat ( size_t s CXX_MEM_STAT_INFO)

◆ ggc_cleared_alloc()

template<typename T >
T * ggc_cleared_alloc ( ALONE_CXX_MEM_STAT_INFO )
inline

◆ ggc_cleared_vec_alloc()

◆ ggc_collect()

◆ ggc_common_finalize()

void ggc_common_finalize ( )
extern

◆ ggc_delete()

◆ ggc_free()

void ggc_free ( void * p)
extern
Free a block.  To be used when known for certain it's not reachable.   
Release the memory for object P.   

Referenced by ggc_delete().

◆ ggc_grow()

void ggc_grow ( void )
extern
Assume that all GGC memory is reachable and grow the limits for next collection.  
Assume that all GGC memory is reachable and grow the limits for next
collection.  With checking, trigger GGC so -Q compilation outputs how much
of memory really is reachable.   

References ggc_globals::allocated, ggc_globals::allocated_last_gc, G, MAX, PRsa, and SIZE_AMOUNT.

Referenced by ipa_read_optimization_summaries_1(), and ipa_read_summaries_1().

◆ ggc_internal_alloc() [1/2]

void * ggc_internal_alloc ( size_t s CXX_MEM_STAT_INFO)
inline

◆ ggc_internal_alloc() [2/2]

◆ ggc_internal_cleared_alloc() [1/2]

void * ggc_internal_cleared_alloc ( size_t s CXX_MEM_STAT_INFO)
inline

◆ ggc_internal_cleared_alloc() [2/2]

void * ggc_internal_cleared_alloc ( size_t size,
void(* )(void *),
size_t ,
size_t MEM_STAT_DECL )
extern
Allocates cleared memory.   
Generate pattern matching and transform code shared between
   GENERIC and GIMPLE folding code from match-and-simplify description.

   Copyright (C) 2014-2024 Free Software Foundation, Inc.
   Contributed by Richard Biener <rguenther@suse.de>
   and Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   
Stubs for GGC referenced through instantiations triggered by hash-map.   

References gcc_assert, and NULL.

Referenced by symtab_node::get_dump_name(), ggc_alloc_cleared_gimple_statement_stat(), ggc_alloc_cleared_tree_node_stat(), ggc_cleared_alloc(), ggc_cleared_vec_alloc(), ggc_internal_cleared_alloc(), and simd_clone_struct_alloc().

◆ ggc_marked_p()

◆ ggc_print_statistics()

◆ ggc_realloc()

void * ggc_realloc ( void * ,
size_t CXX_MEM_STAT_INFO )
extern
Resize a block.   

◆ ggc_register_root_tab()

void ggc_register_root_tab ( const struct ggc_root_tab * rt)
extern
Register an additional root table.  This can be useful for some
plugins.  Does nothing if the passed pointer is NULL.  
Dynamically register a new GGC root table RT. This is useful for
plugins.  

References extra_root_vec.

Referenced by register_callback().

◆ ggc_round_alloc_size()

size_t ggc_round_alloc_size ( size_t requested_size)
extern
Null garbage collection for the GNU compiler.
Copyright (C) 1998-2024 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
License for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   
This version is used by the gen* programs and certain language-specific
targets (such as java), where we don't really need GC at all.
This prevents problems with pulling in all the tree stuff.   
For a given size of memory requested for allocation, return the
actual size that is going to be allocated.   
For a given size of memory requested for allocation, return the
actual size that is going to be allocated.   

◆ ggc_set_mark()

bool ggc_set_mark ( const void * p)
extern
Actually set the mark on a particular region of memory, but don't
follow pointers.  This function is called by ggc_mark_*.  It
returns false if the object was not previously marked; true if
the object was already marked, or if, for any other reason,
pointers in this data structure should not be traversed.   
If P is not marked, marks it and return false.  Otherwise return true.
P must have been allocated by the GC allocator; it mustn't point to
static objects, stack variables, or memory allocated with malloc.   

References ggc_globals::debug_file, G, gcc_assert, GGC_DEBUG_LEVEL, HOST_BITS_PER_LONG, page_entry::in_use_p, lookup_page_table_entry(), page_entry::num_free_objects, OFFSET_TO_BIT, page_entry::order, and page_entry::page.

◆ ggc_trim()

void ggc_trim ( void )
extern
Return unused memory pages to the system.   
Return free pages to the system.   

References ggc_globals::allocated, ggc_globals::bytes_mapped, G, PRsa, release_pages(), SIZE_AMOUNT, sweep_pages(), timevar_pop(), and timevar_push().

Referenced by ipa_free_fn_summary().

◆ ggc_vec_alloc()

◆ gt_clear_caches()

void gt_clear_caches ( )
extern
generated function to clear caches in gc memory.   

Referenced by ggc_mark_roots().

◆ gt_ggc_m_S()

◆ gt_ggc_mx() [1/13]

void gt_ggc_mx ( bool )
inline

◆ gt_ggc_mx() [2/13]

void gt_ggc_mx ( char )
inline

◆ gt_ggc_mx() [3/13]

void gt_ggc_mx ( const char * s)
inline

References ggc_test_and_set_mark.

◆ gt_ggc_mx() [4/13]

void gt_ggc_mx ( int )
inline

◆ gt_ggc_mx() [5/13]

void gt_ggc_mx ( long int )
inline

◆ gt_ggc_mx() [6/13]

void gt_ggc_mx ( long long int )
inline

◆ gt_ggc_mx() [7/13]

void gt_ggc_mx ( short )
inline

◆ gt_ggc_mx() [8/13]

void gt_ggc_mx ( signed char )
inline

◆ gt_ggc_mx() [9/13]

void gt_ggc_mx ( unsigned char )
inline

◆ gt_ggc_mx() [10/13]

void gt_ggc_mx ( unsigned int )
inline

◆ gt_ggc_mx() [11/13]

void gt_ggc_mx ( unsigned long int )
inline

◆ gt_ggc_mx() [12/13]

void gt_ggc_mx ( unsigned long long int )
inline

◆ gt_ggc_mx() [13/13]

void gt_ggc_mx ( unsigned short )
inline

◆ gt_pch_n_S()

void gt_pch_n_S ( const void * x)
extern
PCH and GGC handling for strings, mostly trivial.   
PCH pointer-walking routine for strings.   

References CONST_CAST, gt_pch_note_object(), and gt_pch_p_S().

Referenced by gt_pch_nx(), gt_pch_nx(), and gt_pch_nx().

◆ gt_pch_n_S2()

void gt_pch_n_S2 ( const void * x,
size_t string_len )
extern

◆ gt_pch_note_callback()

void gt_pch_note_callback ( void * obj,
void * base )
extern
Used by the gt_pch_p_* routines.  Register address of a callback
pointer.   
Register address of a callback pointer.   

References callback_vec, gcc_assert, NULL, ptr_data::obj, POINTER_HASH, and saving_htab.

◆ gt_pch_note_object()

int gt_pch_note_object ( void * obj,
void * note_ptr_cookie,
gt_note_pointers note_ptr_fn,
size_t length_override )
extern
Used by the gt_pch_n_* routines.  Register an object in the hash table.   
Register an object in the hash table.   

References gcc_assert, ggc_get_size(), gt_pch_p_S(), ptr_data::note_ptr_cookie, ptr_data::note_ptr_fn, NULL, ptr_data::obj, POINTER_HASH, and saving_htab.

Referenced by gt_pch_n_S(), gt_pch_n_S2(), and gt_pch_nx().

◆ gt_pch_note_reorder()

void gt_pch_note_reorder ( void * obj,
void * note_ptr_cookie,
gt_handle_reorder reorder_fn )
extern
Used by the gt_pch_n_* routines.  Register that an object has a reorder
function.   
Register an object in the hash table.   

References gcc_assert, gcc_checking_assert, gt_pch_p_S(), ptr_data::note_ptr_cookie, NULL, ptr_data::obj, POINTER_HASH, ptr_data::reorder_fn, and saving_htab.

◆ gt_pch_nx() [1/13]

void gt_pch_nx ( bool )
inline

◆ gt_pch_nx() [2/13]

void gt_pch_nx ( char )
inline

◆ gt_pch_nx() [3/13]

void gt_pch_nx ( const char * )
inline

◆ gt_pch_nx() [4/13]

void gt_pch_nx ( int )
inline

◆ gt_pch_nx() [5/13]

void gt_pch_nx ( long int )
inline

◆ gt_pch_nx() [6/13]

void gt_pch_nx ( long long int )
inline

◆ gt_pch_nx() [7/13]

void gt_pch_nx ( short )
inline

◆ gt_pch_nx() [8/13]

void gt_pch_nx ( signed char )
inline

◆ gt_pch_nx() [9/13]

void gt_pch_nx ( unsigned char )
inline

◆ gt_pch_nx() [10/13]

void gt_pch_nx ( unsigned int )
inline

◆ gt_pch_nx() [11/13]

void gt_pch_nx ( unsigned long int )
inline

◆ gt_pch_nx() [12/13]

void gt_pch_nx ( unsigned long long int )
inline

◆ gt_pch_nx() [13/13]

void gt_pch_nx ( unsigned short )
inline

◆ gt_pch_restore()

◆ gt_pch_save()

◆ init_ggc()

◆ init_ggc_heuristics()

void init_ggc_heuristics ( void )
extern
Heuristics.   

References ggc_min_expand_heuristic(), and ggc_min_heapsize_heuristic().

Referenced by toplev::main().

◆ init_stringpool()

void init_stringpool ( void )
extern
End of GTY machinery API.   
Initialize the string pool.   
Initialize the string pool.   

References alloc_node(), ggc_cleared_alloc(), ident_hash, ident_hash_extra, and stringpool_ggc_alloc().

Referenced by general_init().

◆ need_finalization_p()

template<typename T >
bool need_finalization_p ( )
inline

◆ report_heap_memory_use()

void report_heap_memory_use ( void )
extern
Report current heap memory use to stderr.   
Print memory used by heap if this info is available.   

References PRsa, and SIZE_AMOUNT.

Referenced by execute_one_pass(), ipa_read_optimization_summaries_1(), and ipa_read_summaries_1().

◆ stringpool_statistics()

void stringpool_statistics ( void )
extern
Report some basic statistics about the string pool.   

References ident_hash.

Referenced by dump_memory_report().

Variable Documentation

◆ ggc_protect_identifiers

bool ggc_protect_identifiers
extern
When true, identifier nodes are considered as GC roots.  When
false, identifier nodes are treated like any other GC-allocated
object, and the identifier hash table is treated as a weak
hash.   
When true, protect the contents of the identifier hash table.   

Referenced by compile_file(), do_compile(), and ggc_mark_roots().

◆ gt_ggc_deletable_rtab

const struct ggc_root_tab* const gt_ggc_deletable_rtab[]
extern

◆ gt_ggc_rtab

const struct ggc_root_tab* const gt_ggc_rtab[]
extern
Pointers to arrays of ggc_root_tab, terminated by NULL.   

Referenced by ggc_common_finalize(), ggc_mark_roots(), gt_pch_restore(), and gt_pch_save().

◆ gt_pch_scalar_rtab

const struct ggc_root_tab* const gt_pch_scalar_rtab[]
extern