aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPer Bothner <per@bothner.com>2001-03-05 23:29:31 -0800
committerPer Bothner <bothner@gcc.gnu.org>2001-03-05 23:29:31 -0800
commit6d37cf2f0c96a148f9d7ae640ebaab945cea0979 (patch)
tree70814460fc637778012dfbf042802ae3f210f4c7 /gcc
parent21aaf8bffcf05aec09db0213f8210cc205175141 (diff)
downloadgcc-6d37cf2f0c96a148f9d7ae640ebaab945cea0979.zip
gcc-6d37cf2f0c96a148f9d7ae640ebaab945cea0979.tar.gz
gcc-6d37cf2f0c96a148f9d7ae640ebaab945cea0979.tar.bz2
Fix a problem where rest_of_decl_compilation applied to class_dtable_decl causes problems because it was done too early...
Fix a problem where rest_of_decl_compilation applied to class_dtable_decl causes problems because it was done too early, before output file was opened. * decl.c (init_decl_processing): Remove init of class_dtable_decl. * class.c (class_dtable_decl): Add macro - element of class_roots. (make_class_data): Define class_dtable_decl. * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl): Removed. From-SVN: r40256
Diffstat (limited to 'gcc')
-rw-r--r--gcc/java/ChangeLog10
-rw-r--r--gcc/java/class.c15
-rw-r--r--gcc/java/decl.c6
-rw-r--r--gcc/java/java-tree.h5
4 files changed, 24 insertions, 12 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 48ce715..7a436e5 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,13 @@
+2001-03-05 Per Bothner <per@bothner.com>
+
+ Fix a problem where rest_of_decl_compilation applied to
+ class_dtable_decl causes problems because it was done too early,
+ before output file was opened.
+ * decl.c (init_decl_processing): Remove init of class_dtable_decl.
+ * class.c (class_dtable_decl): Add macro - element of class_roots.
+ (make_class_data): Define class_dtable_decl.
+ * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl): Removed.
+
2001-03-01 Zack Weinberg <zackw@stanford.edu>
* java/class.c, java/decl.c, java/java-tree.h: Replace all
diff --git a/gcc/java/class.c b/gcc/java/class.c
index be2e5a4..698ca04 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -84,11 +84,13 @@ static assume_compiled_node *find_assume_compiled_node
static assume_compiled_node *assume_compiled_tree;
-static tree class_roots[4] = { NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE };
+static tree class_roots[5]
+= { NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE };
#define registered_class class_roots[0]
#define fields_ident class_roots[1] /* get_identifier ("fields") */
#define info_ident class_roots[2] /* get_identifier ("info") */
#define class_list class_roots[3]
+#define class_dtable_decl class_roots[4]
/* Return the node that most closely represents the class whose name
is IDENT. Start the search from NODE. Return NULL if an
@@ -1347,6 +1349,17 @@ make_class_data (type)
DECL_IGNORED_P (dtable_decl) = 1;
TREE_PUBLIC (dtable_decl) = 1;
rest_of_decl_compilation (dtable_decl, (char*) 0, 1, 0);
+ if (type == class_type_node)
+ class_dtable_decl = dtable_decl;
+ }
+
+ if (class_dtable_decl == NULL_TREE)
+ {
+ class_dtable_decl = build_dtable_decl (class_type_node);
+ TREE_STATIC (class_dtable_decl) = 1;
+ DECL_ARTIFICIAL (class_dtable_decl) = 1;
+ DECL_IGNORED_P (class_dtable_decl) = 1;
+ rest_of_decl_compilation (class_dtable_decl, (char*) 0, 1, 0);
}
super = CLASSTYPE_SUPER (type);
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 739ddee..32e6976 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -636,12 +636,6 @@ init_decl_processing ()
FIELD_PRIVATE (t) = 1;
FINISH_RECORD (object_type_node);
- class_dtable_decl = build_dtable_decl (class_type_node);
- TREE_STATIC (class_dtable_decl) = 1;
- DECL_ARTIFICIAL (class_dtable_decl) = 1;
- DECL_IGNORED_P (class_dtable_decl) = 1;
- rest_of_decl_compilation (class_dtable_decl, (char*) 0, 1, 0);
-
field_type_node = make_node (RECORD_TYPE);
field_ptr_type_node = build_pointer_type (field_type_node);
method_type_node = make_node (RECORD_TYPE);
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h
index 9273ca4..f804a37 100644
--- a/gcc/java/java-tree.h
+++ b/gcc/java/java-tree.h
@@ -335,8 +335,6 @@ enum java_tree_index
JTI_ACCESS_FLAGS_TYPE_NODE,
- JTI_CLASS_DTABLE_DECL,
-
JTI_NATIVECODE_PTR_ARRAY_TYPE_NODE,
JTI_WFL_OPERATOR,
@@ -584,9 +582,6 @@ extern tree throw_node[];
#define access_flags_type_node \
java_global_trees[JTI_ACCESS_FLAGS_TYPE_NODE]
-#define class_dtable_decl \
- java_global_trees[JTI_CLASS_DTABLE_DECL]
-
#define nativecode_ptr_array_type_node \
java_global_trees[JTI_NATIVECODE_PTR_ARRAY_TYPE_NODE]