This patch removes the GC zone allocator. It is not used and it produces several regressions in the testsuite. Furthermore, it complicates things for the plan to implement manual GC markers (http://gcc.gnu.org/wiki/cxx-conversion/gc-alternatives#Do_GC_marking_manually). Tested on x86_64 with standard checking, --enable-checking=gc and --enable-checking=release. From-SVN: r195426
120 lines
4.0 KiB
C
120 lines
4.0 KiB
C
/* Garbage collection for the GNU compiler. Internal definitions
|
|
for ggc-*.c and stringpool.c.
|
|
|
|
Copyright (C) 2009-2013 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/>. */
|
|
|
|
#ifndef GCC_GGC_INTERNAL_H
|
|
#define GCC_GGC_INTERNAL_H
|
|
|
|
#include "ggc.h"
|
|
|
|
/* Call ggc_set_mark on all the roots. */
|
|
extern void ggc_mark_roots (void);
|
|
|
|
/* Stringpool. */
|
|
|
|
/* Mark the entries in the string pool. */
|
|
extern void ggc_mark_stringpool (void);
|
|
|
|
/* Purge the entries in the string pool. */
|
|
extern void ggc_purge_stringpool (void);
|
|
|
|
/* Save and restore the string pool entries for PCH. */
|
|
|
|
extern void gt_pch_save_stringpool (void);
|
|
extern void gt_pch_fixup_stringpool (void);
|
|
extern void gt_pch_restore_stringpool (void);
|
|
|
|
/* PCH and GGC handling for strings, mostly trivial. */
|
|
extern void gt_pch_p_S (void *, void *, gt_pointer_operator, void *);
|
|
|
|
/* PCH. */
|
|
|
|
struct ggc_pch_data;
|
|
|
|
/* Return a new ggc_pch_data structure. */
|
|
extern struct ggc_pch_data *init_ggc_pch (void);
|
|
|
|
/* The second parameter and third parameters give the address and size
|
|
of an object. Update the ggc_pch_data structure with as much of
|
|
that information as is necessary. The bool argument should be true
|
|
if the object is a string. */
|
|
extern void ggc_pch_count_object (struct ggc_pch_data *, void *, size_t, bool);
|
|
|
|
/* Return the total size of the data to be written to hold all
|
|
the objects previously passed to ggc_pch_count_object. */
|
|
extern size_t ggc_pch_total_size (struct ggc_pch_data *);
|
|
|
|
/* The objects, when read, will most likely be at the address
|
|
in the second parameter. */
|
|
extern void ggc_pch_this_base (struct ggc_pch_data *, void *);
|
|
|
|
/* Assuming that the objects really do end up at the address
|
|
passed to ggc_pch_this_base, return the address of this object.
|
|
The bool argument should be true if the object is a string. */
|
|
extern char *ggc_pch_alloc_object (struct ggc_pch_data *, void *, size_t, bool);
|
|
|
|
/* Write out any initial information required. */
|
|
extern void ggc_pch_prepare_write (struct ggc_pch_data *, FILE *);
|
|
|
|
/* Write out this object, including any padding. The last argument should be
|
|
true if the object is a string. */
|
|
extern void ggc_pch_write_object (struct ggc_pch_data *, FILE *, void *,
|
|
void *, size_t, bool);
|
|
|
|
/* All objects have been written, write out any final information
|
|
required. */
|
|
extern void ggc_pch_finish (struct ggc_pch_data *, FILE *);
|
|
|
|
/* A PCH file has just been read in at the address specified second
|
|
parameter. Set up the GC implementation for the new objects. */
|
|
extern void ggc_pch_read (FILE *, void *);
|
|
|
|
|
|
/* Allocation and collection. */
|
|
|
|
/* When set, ggc_collect will do collection. */
|
|
extern bool ggc_force_collect;
|
|
|
|
extern void ggc_record_overhead (size_t, size_t, void * FINAL_MEM_STAT_DECL);
|
|
|
|
extern void ggc_free_overhead (void *);
|
|
|
|
extern void ggc_prune_overhead_list (void);
|
|
|
|
/* Return the number of bytes allocated at the indicated address. */
|
|
extern size_t ggc_get_size (const void *);
|
|
|
|
|
|
/* Statistics. */
|
|
|
|
/* This structure contains the statistics common to all collectors.
|
|
Particular collectors can extend this structure. */
|
|
typedef struct ggc_statistics
|
|
{
|
|
/* At present, we don't really gather any interesting statistics. */
|
|
int unused;
|
|
} ggc_statistics;
|
|
|
|
/* Used by the various collectors to gather and print statistics that
|
|
do not depend on the collector in use. */
|
|
extern void ggc_print_common_statistics (FILE *, ggc_statistics *);
|
|
|
|
#endif
|