jcf-parse.c (ggc_mark_jcf): New function.

* jcf-parse.c (ggc_mark_jcf):  New function.
	(init_jcf_parse):  Register current_jcf as ggc root.

From-SVN: r39173
This commit is contained in:
Per Bothner 2001-01-21 13:18:04 -08:00 committed by Per Bothner
parent 2c36c7fd96
commit 3432b91b65
2 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2001-01-21 Per Bothner <per@bothner.com>
* jcf-parse.c (ggc_mark_jcf): New function.
(init_jcf_parse): Register current_jcf as ggc root.
2001-01-21 Per Bothner <per@bothner.com> 2001-01-21 Per Bothner <per@bothner.com>
* lang.c (put_decl_node): Print method's name. * lang.c (put_decl_node): Print method's name.

View File

@ -93,6 +93,29 @@ static int find_in_current_zip PARAMS ((const char *, struct JCF **));
static void parse_class_file PARAMS ((void)); static void parse_class_file PARAMS ((void));
static void set_source_filename PARAMS ((JCF *, int)); static void set_source_filename PARAMS ((JCF *, int));
static int predefined_filename_p PARAMS ((tree)); static int predefined_filename_p PARAMS ((tree));
static void ggc_mark_jcf PARAMS ((void**));
/* Mark (for garbage collection) all the tree nodes that are
referenced from JCF's constant pool table. */
static void
ggc_mark_jcf (elt)
void **elt;
{
JCF *jcf = *(JCF**) elt;
if (jcf != NULL)
{
CPool *cpool = &jcf->cpool;
int size = CPOOL_COUNT(cpool);
int index;
for (index = 1; index < size; index++)
{
int tag = JPOOL_TAG (jcf, index);
if ((tag & CONSTANT_ResolvedFlag) || tag == CONSTANT_Utf8)
ggc_mark_tree ((tree) cpool->data[index]);
}
}
}
/* Handle "SourceFile" attribute. */ /* Handle "SourceFile" attribute. */
@ -1099,4 +1122,6 @@ init_jcf_parse ()
ggc_add_tree_root (&current_field, 1); ggc_add_tree_root (&current_field, 1);
ggc_add_tree_root (&current_method, 1); ggc_add_tree_root (&current_method, 1);
ggc_add_tree_root (&current_file_list, 1); ggc_add_tree_root (&current_file_list, 1);
ggc_add_root (&current_jcf, 1, sizeof (JCF), ggc_mark_jcf);
} }