class.c (make_class): Don't set CLASS_P here (because this function is also called...
authorPer Bothner <bothner@gcc.gnu.org>
Mon, 15 Mar 1999 13:09:36 +0000 (05:09 -0800)
committerPer Bothner <bothner@gcc.gnu.org>
Mon, 15 Mar 1999 13:09:36 +0000 (05:09 -0800)
a
* class.c (make_class):  Don't set CLASS_P here (because
this function is also called by build_java_array_type).
(push_class):  Set CLASS_P here instead.
* parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
* jcf-dump.c (print_access_flags):  Take extra parameter to indicate
context.  If the context is class, perfer "super" over "synchronized".
* jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
* parse.y (create_class):  Don't call parser_check_super here;
it is not robust.  Always wait until later.
* parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
match what JDK 1.2 does), but don't set ACC_PUBLIC.

From-SVN: r25783

gcc/java/jcf-write.c

index 7a9cb91ac3a8b821de7f412c4436f305ead3c4e2..cc90341c4bf712f6e597083fcd492e0b7fe01eed 100644 (file)
@@ -2696,7 +2696,9 @@ generate_classfile (clas, state)
   else
     i = 8 + 2 * total_supers;
   ptr = append_chunk (NULL, i, state);
-  i = get_access_flags (TYPE_NAME (clas)) | ACC_SUPER;
+  i = get_access_flags (TYPE_NAME (clas));
+  if (! (i & ACC_INTERFACE))
+    i |= ACC_SUPER;
   PUT2 (i); /* acces_flags */
   i = find_class_constant (&state->cpool, clas);  PUT2 (i);  /* this_class */
   if (clas == object_type_node)