aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/class.c
diff options
context:
space:
mode:
authorPer Bothner <bothner@gcc.gnu.org>1998-10-12 05:43:32 -0700
committerPer Bothner <bothner@gcc.gnu.org>1998-10-12 05:43:32 -0700
commita7303141b4bac74ce70993d41945f74cdf52d237 (patch)
tree9b34f30f9aadef0df59bf1774ac6449e570cb4f8 /gcc/java/class.c
parent6d6044b0e6b2f58acef4fa2dbe5b39e331f3962e (diff)
downloadgcc-a7303141b4bac74ce70993d41945f74cdf52d237.zip
gcc-a7303141b4bac74ce70993d41945f74cdf52d237.tar.gz
gcc-a7303141b4bac74ce70993d41945f74cdf52d237.tar.bz2
*** empty log message ***
From-SVN: r23019
Diffstat (limited to 'gcc/java/class.c')
-rw-r--r--gcc/java/class.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/gcc/java/class.c b/gcc/java/class.c
index 920d50d..ef01813 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -156,7 +156,7 @@ push_class (class_type, class_name)
input_filename = save_input_filename;
lineno = save_lineno;
signature = identifier_subst (class_name, "L", '.', '/', ";");
- IDENTIFIER_SIGNATURE_TYPE (signature) = class_type;
+ IDENTIFIER_SIGNATURE_TYPE (signature) = build_pointer_type (class_type);
/* Setting DECL_ARTIFICAL forces dbxout.c to specific the type is
both a typedef and in the struct name-space. We may want to re-visit
@@ -445,10 +445,6 @@ add_field (class, name, field_type, flags)
tree field;
/* Push the obstack of field_type ? FIXME */
push_obstacks (&permanent_obstack, &permanent_obstack);
-#if ! JAVA_PROMOTE_TO_INT
- if (TREE_CODE (field_type) == RECORD_TYPE)
-#endif
- field_type = promote_type (field_type);
field = build_decl (is_static ? VAR_DECL : FIELD_DECL, name, field_type);
pop_obstacks ();
TREE_CHAIN (field) = TYPE_FIELDS (class);
@@ -464,8 +460,9 @@ add_field (class, name, field_type, flags)
if (is_static)
{
FIELD_STATIC (field) = 1;
- if (! FIELD_PRIVATE (field) || FIELD_PROTECTED (field))
- TREE_PUBLIC (field) = 1;
+ /* Always make field externally visible. This is required so
+ that native methods can always access the field. */
+ TREE_PUBLIC (field) = 1;
}
return field;
}
@@ -1118,6 +1115,8 @@ make_class_data (type)
PUSH_FIELD_VALUE (cons, "final",
method == NULL ? integer_zero_node : integer_one_node);
+ PUSH_FIELD_VALUE (cons, "thread", null_pointer_node);
+
FINISH_RECORD_CONSTRUCTOR (cons);
DECL_INITIAL (decl) = cons;
@@ -1598,5 +1597,5 @@ emit_register_class ()
void
init_class_processing ()
{
- registerClass_libfunc = gen_rtx (SYMBOL_REF, Pmode, "registerClass");
+ registerClass_libfunc = gen_rtx (SYMBOL_REF, Pmode, "_Jv_RegisterClass");
}