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
This commit is contained in:
parent
21aaf8bffc
commit
6d37cf2f0c
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user