GCC Middle and Back End API Reference
|
#include "gtype-desc.h"
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) |
#define | ggc_mark(EXPR) |
#define | GGC_RESIZEVEC(T, P, N) |
#define | ggc_strdup(S) |
#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 > | |
T * | ggc_alloc (ALONE_CXX_MEM_STAT_INFO) |
template<typename T > | |
T * | ggc_alloc_no_dtor (ALONE_CXX_MEM_STAT_INFO) |
template<typename T > | |
T * | ggc_cleared_alloc (ALONE_CXX_MEM_STAT_INFO) |
template<typename T > | |
T * | ggc_vec_alloc (size_t c CXX_MEM_STAT_INFO) |
template<typename T > | |
T * | ggc_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_def * | ggc_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) |
gimple * | ggc_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 |
#define ggc_alloc_rtvec_sized | ( | NELT | ) |
Referenced by rtvec_alloc().
#define ggc_mark | ( | EXPR | ) |
Reallocator.
Referenced by emit_status::ensure_regno_capacity(), and get_hard_reg_initial_val().
#define ggc_strdup | ( | S | ) |
Make a copy of S, in GC-able memory.
Referenced by addr_for_mem_ref(), alias_get_name(), assemble_start_function(), assemble_static_space(), assemble_trampoline_template(), build_constant_desc(), create_function_info_for(), create_variable_info_for_1(), ctf_add_cuname(), ctfc_strtable_add_str(), dw_loc_list(), dwarf2out_define(), dwarf2out_switch_text_section(), expand_asm_loc(), expand_asm_stmt(), function_reader::finalize_string(), find_AT_string_in_table(), force_const_mem(), get_section(), get_section_anchor(), init_emit_regs(), instantiate_virtual_regs_in_insn(), ira_nullify_asm_goto(), new_var_info(), notice_global_symbol(), record_dynamic_alloc(), rtl_for_decl_init(), sjlj_emit_function_enter(), str_pattern_slim(), and xstrdup_for_dump().
#define ggc_test_and_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().
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.
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.
typedef void(* gt_pointer_walker) (void *) |
Mark the object in the first parameter and anything it points to.
enum ggc_collect |
|
extern |
Dump per-site memory statistics.
References GGC_COLLECT_FORCE, ggc_mem_desc, and GGC_ORIGIN.
Referenced by dump_memory_report().
void finalize | ( | void * | p | ) |
|
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().
|
inline |
References ggc_internal_alloc(), and PASS_MEM_STAT.
Referenced by alloc_for_identifier_to_locale(), ctf_add_cuname(), ggc_alloc_string(), remap_filename(), and stringpool_ggc_alloc().
|
inline |
References ggc_internal_cleared_alloc(), and PASS_MEM_STAT.
Referenced by gimple_alloc().
union tree_node * ggc_alloc_cleared_tree_node_stat | ( | size_t s | CXX_MEM_STAT_INFO | ) |
References ggc_internal_cleared_alloc(), and PASS_MEM_STAT.
Referenced by build_new_poly_int_cst(), build_vl_exp(), make_int_cst(), make_node(), make_tree_vec(), and make_vector().
|
inline |
GGC allocation function that does not call finalizer for type that have need_finalization_p equal to true. User is responsible for calling of the destructor.
References ggc_internal_alloc(), NULL, and PASS_MEM_STAT.
Referenced by ipa_fn_summary_t::create_ggc(), ipcp_transformation_t::create_ggc(), modref_summaries::create_ggc(), modref_summaries_lto::create_ggc(), modref_tree< T >::create_ggc(), clone_info::get_create(), thunk_info::get_create(), ipa_check_create_edge_args(), ipa_check_create_node_params(), and ipa_record_return_value_range().
|
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().
|
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().
union tree_node * ggc_alloc_tree_node_stat | ( | size_t s | CXX_MEM_STAT_INFO | ) |
References ggc_internal_alloc(), and PASS_MEM_STAT.
Referenced by copy_node(), make_tree_binfo(), and tree_cons().
|
inline |
References finalize(), ggc_internal_cleared_alloc(), need_finalization_p(), NULL, and PASS_MEM_STAT.
Referenced by add_addr_table_entry(), add_location_or_const_value_attribute(), add_var_loc_to_decl(), alloc_block(), alloc_loop(), allocate_stack_usage_info(), allocate_struct_function(), break_out_comdat_types(), btf_add_func_records(), btf_collect_pruned_types(), cgraph_allocate_init_indirect_info(), cgraph_edge::clone(), ctf_add_enumerator(), ctf_add_function_arg(), ctf_add_generic(), ctf_add_member_offset(), ctf_add_variable(), ctfc_strtable_append_str(), ipa_sra_function_summaries::duplicate(), dwarf2out_alloc_current_fde(), symbol_table::finalize_toplevel_asm(), find_AT_string_in_table(), flow_loops_find(), gen_eh_landing_pad(), gen_eh_region(), gen_eh_region_catch(), get_block_for_section(), get_odr_type(), get_ptr_info(), get_simple_loop_desc(), ggc_cleared_alloc_htab_ignore_args(), init_eh_for_function(), init_emit_regs(), init_flow(), init_lowered_empty_function(), init_rtl_bb_info(), init_stringpool(), init_tree_optimization_optabs(), init_tree_ssa(), input_cfg(), input_eh_lp(), input_eh_region(), cgraph_node::insert_new_function_version(), lto_input_eh_catch_list(), lto_new_in_decl_state(), make_node(), move_sese_region_to_fn(), new_cfi_row(), new_ctf_container(), new_die(), new_die_raw(), new_loc_descr(), new_loc_list(), omp_lto_input_declare_variant_alt(), omp_resolve_declare_variant(), cgraph_node::rtl_info(), symtab_node::set_section_for_node(), and unchecked_make_edge().
References finalize(), ggc_internal_cleared_alloc(), need_finalization_p(), NULL, and PASS_MEM_STAT.
Referenced by hash_table< Descriptor, Lazy, Allocator >::alloc_entries(), ggc_cleared_alloc_ptr_array_two_args(), gimple_build_omp_for(), init_emit(), lambda_vector_new(), lto_input_mode_table(), and tree_add_const_value_attribute().
|
extern |
Top level mark-and-sweep routine.
References ggc_globals::allocated, ggc_globals::allocated_last_gc, clear_marks(), ggc_globals::context_depth, ggc_globals::context_depth_collections, ggc_globals::debug_file, G, GGC_COLLECT_HEURISTIC, GGC_DEBUG_LEVEL, ggc_handle_finalizers(), ggc_mark_roots(), ggc_prune_overhead_list(), in_gc, invoke_plugin_callbacks(), MAX, NULL, ONE_K, poison_pages, PRsa, release_pages(), SIZE_AMOUNT, sweep_pages(), timevar_pop(), timevar_push(), memory_block_pool::trim(), and validate_free_objects.
|
extern |
Forcibly clear all GTY roots.
References ggc_root_tab::base, ggc_zero_rtab_roots(), gt_ggc_deletable_rtab, gt_ggc_rtab, gt_pch_scalar_rtab, ggc_root_tab::nelt, NULL, and ggc_root_tab::stride.
Referenced by toplev::finalize().
Call destructor and free the garbage collected memory.
References ggc_free().
Referenced by modref_tree< T >::cleanup(), ipa_free_all_edge_args(), ipa_free_all_node_params(), ipa_free_fn_summary(), ipa_modref_cc_finalize(), ipa_prop_cc_finalize(), ipa_sra_cc_finalize(), modref_tree< T >::merge(), call_summary_base< T >::release(), clone_info::release(), function_summary_base< T >::release(), thunk_info::release(), modref_summary::~modref_summary(), and modref_summary_lto::~modref_summary_lto().
|
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().
|
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().
|
inline |
References ggc_internal_alloc(), NULL, and PASS_MEM_STAT.
|
extern |
Allocation.
The internal primitive.
References gcc_assert.
Referenced by vrange_ggc_alloc::alloc(), alloc_dw_wide_int(), call_summary_base< T >::allocate_new(), function_summary_base< T >::allocate_new(), allocate_phi_node(), build_omp_clause(), build_string(), create_block_symbol(), function_reader::extra_parsing_for_operand_code_0(), ggc_alloc(), ggc_alloc_atomic(), ggc_alloc_no_dtor(), ggc_alloc_rtx_def_stat(), ggc_alloc_tree_node_stat(), ggc_internal_alloc(), ggc_internal_cleared_alloc(), ggc_realloc(), ggc_splay_alloc(), ggc_vec_alloc(), and ssa_operand_alloc().
|
inline |
References ggc_internal_cleared_alloc(), NULL, and PASS_MEM_STAT.
|
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().
|
extern |
Return true if P has been marked, zero otherwise. P must have been allocated by the GC allocator; it mustn't point to static objects, stack variables, or memory allocated with malloc.
References gcc_assert, HOST_BITS_PER_LONG, page_entry::in_use_p, lookup_page_table_entry(), OFFSET_TO_BIT, page_entry::order, and page_entry::page.
Referenced by ggc_handle_finalizers(), ggc_prune_overhead_list(), ggc_purge_stringpool(), ggc_cache_remove< T >::keep_cache_entry(), hash_map< KeyId, Value, Traits >::hash_entry::keep_cache_entry(), tm_clone_hasher::keep_cache_entry(), tm_wrapper_hasher::keep_cache_entry(), tree_decl_map_cache_hasher::keep_cache_entry(), tree_type_map_cache_hasher::keep_cache_entry(), tree_vec_map_cache_hasher::keep_cache_entry(), type_cache_hasher::keep_cache_entry(), maybe_delete_ident(), and tree_map_base_marked_p().
|
extern |
Statistics.
Print allocation statistics.
References ggc_globals::allocated, ggc_globals::allocated_last_gc, BITMAP_SIZE, page_entry::bytes, ggc_globals::bytes_mapped, G, ggc_print_common_statistics(), i, page_entry::next, page_entry::num_free_objects, NUM_ORDERS, OBJECT_SIZE, OBJECTS_IN_PAGE, ggc_globals::pages, PRIu64, PRsa, release_pages(), SIZE_AMOUNT, ggc_globals::stats, ggc_globals::total_allocated, ggc_globals::total_allocated_per_order, ggc_globals::total_allocated_under128, ggc_globals::total_allocated_under32, ggc_globals::total_allocated_under64, ggc_globals::total_overhead, ggc_globals::total_overhead_per_order, ggc_globals::total_overhead_under128, ggc_globals::total_overhead_under32, and ggc_globals::total_overhead_under64.
Referenced by dump_memory_report().
|
extern |
Resize a block.
|
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().
|
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.
|
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.
|
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().
References finalize(), ggc_internal_alloc(), need_finalization_p(), NULL, and PASS_MEM_STAT.
Referenced by add_const_value_attribute(), btf_add_vars(), btf_collect_pruned_types(), btf_collect_translated_types(), ctf_preprocess(), get_hard_reg_initial_val(), gimple_copy(), gt_pch_save_stringpool(), loc_descriptor(), mem_loc_descriptor(), symtab_node::set_section_for_node(), and string_concat::string_concat().
|
extern |
generated function to clear caches in gc memory.
Referenced by ggc_mark_roots().
|
extern |
Mark function for strings.
References CONST_CAST, ggc_globals::debug_file, G, gcc_assert, GGC_DEBUG_LEVEL, HOST_BITS_PER_LONG, page_entry::in_use_p, page_entry::num_free_objects, object_size_table, offset, OFFSET_TO_BIT, offsetof, page_entry::order, page_entry::page, and safe_lookup_page_table_entry().
Referenced by gt_ggc_mx(), gt_ggc_mx(), and gt_ggc_mx().
|
inline |
|
inline |
|
inline |
References ggc_test_and_set_mark.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
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().
|
extern |
References CONST_CAST, gt_pch_note_object(), and gt_pch_p_S().
|
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.
|
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().
|
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.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
extern |
Read objects previously saved with gt_pch_save from F.
Read the state of the compiler back in from F.
References ggc_root_tab::base, fatal_error(), gcc_assert, ggc_pch_read(), gt_ggc_deletable_rtab, gt_ggc_rtab, gt_pch_restore_stringpool(), gt_pch_save(), gt_pch_scalar_rtab, host_hooks::gt_pch_use_address, i, input_location, line_table, MIN, ggc_root_tab::nelt, NULL, mmap_info::offset, mmap_info::preferred_base, read_uleb128(), SEEK_CUR, SEEK_SET, mmap_info::size, sorry_at(), and ggc_root_tab::stride.
|
extern |
Write out all GCed objects to F.
Write out the state of the compiler to F.
References ggc_root_tab::base, callback_vec, compare_ptr(), compare_ptr_data(), fatal_error(), gcc_assert, gcc_checking_assert, ggc_call_alloc(), ggc_call_count(), ggc_pch_finish(), ggc_pch_prepare_write(), ggc_pch_this_base(), ggc_pch_total_size(), ggc_pch_write_object(), gt_ggc_rtab, host_hooks::gt_pch_alloc_granularity, gt_pch_fixup_stringpool(), host_hooks::gt_pch_get_address, gt_pch_p_S(), gt_pch_save(), gt_pch_save_stringpool(), gt_pch_scalar_rtab, i, init_ggc_pch(), input_location, ggc_root_tab::nelt, NULL, mmap_info::offset, ggc_root_tab::pchw, mmap_info::preferred_base, qsort, reloc_addrs_vec, relocate_ptrs(), saving_htab, SEEK_SET, mmap_info::size, ggc_root_tab::stride, timevar_pop(), timevar_push(), UNLIKELY, VALGRIND_DISCARD, vNULL, write_pch_globals(), and write_uleb128().
Referenced by gt_pch_restore(), and gt_pch_save().
|
extern |
Initialize the garbage collector.
Initialize the ggc-mmap allocator.
References ggc_globals::by_depth, ggc_globals::by_depth_in_use, ggc_globals::by_depth_max, page_entry::bytes, compute_inverse(), ggc_globals::debug_file, ggc_globals::depth, ggc_globals::depth_in_use, ggc_globals::depth_max, exact_log2(), extra_order_size_table, ggc_globals::finalizers, fopen, ggc_globals::free_pages, G, gcc_assert, HOST_BITS_PER_PTR, i, INITIAL_PTE_COUNT, internal_error(), ggc_globals::lg_pagesize, MAX_ALIGNMENT, page_entry::next, NULL, NUM_ORDERS, NUM_SIZE_LOOKUP, O_RDONLY, OBJECT_SIZE, object_size_table, objects_per_page_table, page_entry::order, page_entry::page, ggc_globals::pagesize, ROUND_UP, ggc_globals::save_in_use, size_lookup, ggc_globals::vec_finalizers, and vNULL.
Referenced by general_init().
|
extern |
Heuristics.
References ggc_min_expand_heuristic(), and ggc_min_heapsize_heuristic().
Referenced by toplev::main().
|
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().
|
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().
|
extern |
Report some basic statistics about the string pool.
References ident_hash.
Referenced by dump_memory_report().
|
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().
|
extern |
Referenced by ggc_common_finalize(), ggc_mark_roots(), and gt_pch_restore().
|
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().
|
extern |
Referenced by ggc_common_finalize(), gt_pch_restore(), and gt_pch_save().