mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-05 01:39:45 +08:00
* stringpool.c: Add comments to PCH saving/restoring routines.
From-SVN: r82380
This commit is contained in:
parent
711e31876f
commit
4bb4ae964a
@ -1,3 +1,7 @@
|
|||||||
|
2004-05-28 Geoffrey Keating <geoffk@apple.com>
|
||||||
|
|
||||||
|
* stringpool.c: Add comments to PCH saving/restoring routines.
|
||||||
|
|
||||||
2004-05-28 Andrew Pinski <pinskia@physics.uc.edu>
|
2004-05-28 Andrew Pinski <pinskia@physics.uc.edu>
|
||||||
|
|
||||||
* c-common.c (c_estimate_num_insns_1): Kill.
|
* c-common.c (c_estimate_num_insns_1): Kill.
|
||||||
|
@ -146,7 +146,7 @@ stringpool_statistics (void)
|
|||||||
{
|
{
|
||||||
ht_dump_statistics (ident_hash);
|
ht_dump_statistics (ident_hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mark an identifier for GC. */
|
/* Mark an identifier for GC. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -193,9 +193,12 @@ gt_pch_n_S (const void *x)
|
|||||||
{
|
{
|
||||||
gt_pch_note_object ((void *)x, (void *)x, >_pch_p_S);
|
gt_pch_note_object ((void *)x, (void *)x, >_pch_p_S);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle saving and restoring the string pool for PCH. */
|
/* Handle saving and restoring the string pool for PCH. */
|
||||||
|
|
||||||
|
/* SPD is saved in the PCH file and holds the information needed
|
||||||
|
to restore the string pool. */
|
||||||
|
|
||||||
struct string_pool_data GTY(())
|
struct string_pool_data GTY(())
|
||||||
{
|
{
|
||||||
tree * GTY((length ("%h.nslots"))) entries;
|
tree * GTY((length ("%h.nslots"))) entries;
|
||||||
@ -205,6 +208,9 @@ struct string_pool_data GTY(())
|
|||||||
|
|
||||||
static GTY(()) struct string_pool_data * spd;
|
static GTY(()) struct string_pool_data * spd;
|
||||||
|
|
||||||
|
/* Copy HP into the corresponding entry in HT2, and then clear
|
||||||
|
the cpplib parts of HP. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ht_copy_and_clear (cpp_reader *r ATTRIBUTE_UNUSED, hashnode hp, const void *ht2_p)
|
ht_copy_and_clear (cpp_reader *r ATTRIBUTE_UNUSED, hashnode hp, const void *ht2_p)
|
||||||
{
|
{
|
||||||
@ -227,8 +233,15 @@ ht_copy_and_clear (cpp_reader *r ATTRIBUTE_UNUSED, hashnode hp, const void *ht2_
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The hash table as it was before gt_pch_save_stringpool was called. */
|
||||||
|
|
||||||
static struct ht *saved_ident_hash;
|
static struct ht *saved_ident_hash;
|
||||||
|
|
||||||
|
/* The hash table contains pointers to the cpp_hashnode inside the
|
||||||
|
lang_identifier. The PCH machinery can't handle pointers that refer
|
||||||
|
to the inside of an object, so to save the hash table for PCH the
|
||||||
|
pointers are adjusted and stored in the variable SPD. */
|
||||||
|
|
||||||
void
|
void
|
||||||
gt_pch_save_stringpool (void)
|
gt_pch_save_stringpool (void)
|
||||||
{
|
{
|
||||||
@ -249,6 +262,9 @@ gt_pch_save_stringpool (void)
|
|||||||
ht_forall (ident_hash, ht_copy_and_clear, saved_ident_hash);
|
ht_forall (ident_hash, ht_copy_and_clear, saved_ident_hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return the stringpool to its state before gt_pch_save_stringpool
|
||||||
|
was called. */
|
||||||
|
|
||||||
void
|
void
|
||||||
gt_pch_fixup_stringpool (void)
|
gt_pch_fixup_stringpool (void)
|
||||||
{
|
{
|
||||||
@ -257,6 +273,9 @@ gt_pch_fixup_stringpool (void)
|
|||||||
saved_ident_hash = 0;
|
saved_ident_hash = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* A PCH file has been restored, which loaded SPD; fill the real hash table
|
||||||
|
with adjusted pointers from SPD. */
|
||||||
|
|
||||||
void
|
void
|
||||||
gt_pch_restore_stringpool (void)
|
gt_pch_restore_stringpool (void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user