Next: Plugins description, Previous: Plugins pass, Up: Plugins
Some plugins may want to be informed when GGC (the GCC Garbage
Collector) is running. They can register callbacks for the
PLUGIN_GGC_START
and PLUGIN_GGC_END
events (for which
the callback is called with a null gcc_data
) to be notified of
the start or end of the GCC garbage collection.
Some plugins may need to have GGC mark additional data. This can be
done by registering a callback (called with a null gcc_data
)
for the PLUGIN_GGC_MARKING
event. Such callbacks can call the
ggc_set_mark
routine, preferably through the ggc_mark
macro
(and conversely, these routines should usually not be used in plugins
outside of the PLUGIN_GGC_MARKING
event).
Some plugins may need to add extra GGC root tables, e.g. to handle their own
GTY
-ed data. This can be done with the PLUGIN_REGISTER_GGC_ROOTS
pseudo-event with a null callback and the extra root table (of type struct
ggc_root_tab*
) as user_data
. Plugins that want to use the
if_marked
hash table option can add the extra GGC cache tables generated
by gengtype
using the PLUGIN_REGISTER_GGC_CACHES
pseudo-event with
a null callback and the extra cache table (of type struct ggc_cache_tab*
)
as user_data
. Running the gengtype -p
source-dir
file-list plugin*.c ...
utility generates these extra root tables.
You should understand the details of memory management inside GCC
before using PLUGIN_GGC_MARKING
, PLUGIN_REGISTER_GGC_ROOTS
or PLUGIN_REGISTER_GGC_CACHES
.