summaryrefslogtreecommitdiff
path: root/gcc/java/constants.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2000-09-23 17:09:39 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2000-09-23 17:09:39 +0000
commit19e223db83b86b7262db77c9ea67e7d6d32a0d73 (patch)
tree95f1fa9690fd278ef5602931fc5a32ddfca8d2bd /gcc/java/constants.c
parenta3b434a23543ba4fe8ac546382475e145b8be83f (diff)
downloadgcc-19e223db83b86b7262db77c9ea67e7d6d32a0d73.tar.gz
Make-lang.in (JAVA_SRCS): Include java-tree.h.
* Make-lang.in (JAVA_SRCS): Include java-tree.h. * Makefile.in (parse.o): Depend on ggc.h. (class.o): Likewise. (constants.o): Likewise. (decl.o): Likewise. (expr.o): Likewise. (jcf-parse.o): Likewise. (jcf-write.o): Likewise. (mangle.o): Likewise. * class.c: Include ggc.h. (build_static_field_ref): Register GC roots. (layout_class): Likewise. (init_class_processing): Likewise. * constants.c: Include ggc.h. (current_constant_pool_data_ref): Remove. (tag_nodes): Move it to ... (get_tag_node): ... here. Register GC roots. * decl.c: Include ggc.h. Remove many global tree definitions. (throw_node): Define. (java_global_trees): Likewise. (predef_filenames): Make the size a constant. (init_decl_processing): Adjust accordingly. (init_decl_processing): Call init_jcf_parse. Register GC roots. * expr.c: Include ggc.h. (init_expr_processing): Register GC roots. (build_invokeinterface): Likewise. * java-tree.h: Replace extern tree declarations with macros. (java_global_trees): New variable. (java_tree_index): New enumeration. (init_jcf_parse): Declare. * jcf-parse.c: Include ggc.h. (current_class): Remove declaration. (main_class): Likewise. (all_class_list): Likewise. (predefined_filename_p): Adjust for constant size of predef_filenames. (init_jcf_parse): New function. * jcf-write.c: Include ggc.h. (generate_classfile): Register GC roots. (append_synthetic_attribute): Likewise. (append_innerclass_attribute_entry): Likewise. * lang.c: Include ggc.h. (lang_print_error): Register GC roots. * parse.h (struct parser_ctxt): Rename fields to avoid conflicts with macros. * parse.y: Include ggc.h. (wfl_operator): Remove. (goal): Register GC roots. (java_pop_parser_context): Adjust for new field names. (java_parser_context_save_global): Likewse. (java_parser_context_restore_global): Likewise. (java_parser_context_suspend): Likewise. (java_parser_context_resume): Likewise. (verify_constructor_circularity): Register GC roots. (lookup_cl): Likewise. (java_reorder_fields): Likewise. (build_current_this): Likewise. (class_in_current_package): Likewise. (argument_types_convertible): Likewise. (patch_cast): Rename wfl_op parameter to avoid macro conflicts. From-SVN: r36581
Diffstat (limited to 'gcc/java/constants.c')
-rw-r--r--gcc/java/constants.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/gcc/java/constants.c b/gcc/java/constants.c
index d465f52ae98..c1dd6719caa 100644
--- a/gcc/java/constants.c
+++ b/gcc/java/constants.c
@@ -27,6 +27,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "tree.h"
#include "java-tree.h"
#include "toplev.h"
+#include "ggc.h"
extern struct obstack permanent_obstack;
@@ -318,17 +319,21 @@ write_constant_pool (cpool, buffer, length)
CPool *outgoing_cpool;
-/* If non-NULL, an ADDR_EXPR referencing a VAR_DECL containing
- the constant data array for the current class. */
-tree current_constant_pool_data_ref;
-
-/* A Cache for build_int_2 (CONSTANT_XXX, 0). */
-static tree tag_nodes[13];
-
static tree
get_tag_node (tag)
int tag;
{
+ /* A Cache for build_int_2 (CONSTANT_XXX, 0). */
+ static tree tag_nodes[13];
+ static int initialized_p;
+
+ /* Register the TAG_NODES with the garbage collector. */
+ if (!initialized_p)
+ {
+ ggc_add_tree_root (tag_nodes, 13);
+ initialized_p = 1;
+ }
+
if (tag_nodes[tag] == NULL_TREE)
{
push_obstacks (&permanent_obstack, &permanent_obstack);