OSDN Git Service

d
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 16 Jan 1999 10:00:29 +0000 (10:00 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 16 Jan 1999 10:00:29 +0000 (10:00 +0000)
* expr.c (process_jvm_instruction):  Coerce to correct Throwable
sub-type the result of the call that gets the exception value.
* parse.y (java_complete_expand_methods):  If flags_syntax_only,
don't call finish_class.
* parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
clear found before continuing.
* verify.c (verify_jvm_instructions):  On an array load, allow
and handle top of stack to be TYPE_NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24697 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/expr.c
gcc/java/parse.c
gcc/java/parse.y

index 623eb90..ab3d2f3 100644 (file)
@@ -2197,8 +2197,8 @@ process_jvm_instruction (PC, byte_ops, length)
      replace the top of the stack with the thrown object reference */
   if (instruction_bits [PC] & BCODE_EXCEPTION_TARGET)
     {
-      pop_value (ptr_type_node);
-      push_value (soft_exceptioninfo_call_node);
+      tree type = pop_type (ptr_type_node);
+      push_value (build1 (NOP_EXPR, type, soft_exceptioninfo_call_node));
     }
 
   switch (byte_ops[PC++])
index c34aa13..8d7da90 100644 (file)
@@ -7161,8 +7161,13 @@ java_check_regular_methods (class_decl)
       found = lookup_argument_method (super_class, DECL_NAME (method), sig);
 
       /* Nothing overrides or it's a private method. */
-      if (!found || (found && METHOD_PRIVATE (found)))
+      if (!found)
        continue;
+      if (METHOD_PRIVATE (found))
+       {
+         found = NULL_TREE;
+         continue;
+       }
 
       /* If found wasn't verified, it's DECL_NAME won't be set properly. 
         We set it temporarily for the sake of the error report. */
@@ -8310,7 +8315,7 @@ java_complete_expand_methods ()
        {
          if (flag_emit_class_files)
            write_classfile (current_class);
-         else
+         else if (! flag_syntax_only)
            finish_class (current_class);
        }
     }
index 0384004..c6805c2 100644 (file)
@@ -4523,8 +4523,13 @@ java_check_regular_methods (class_decl)
       found = lookup_argument_method (super_class, DECL_NAME (method), sig);
 
       /* Nothing overrides or it's a private method. */
-      if (!found || (found && METHOD_PRIVATE (found)))
+      if (!found)
        continue;
+      if (METHOD_PRIVATE (found))
+       {
+         found = NULL_TREE;
+         continue;
+       }
 
       /* If found wasn't verified, it's DECL_NAME won't be set properly. 
         We set it temporarily for the sake of the error report. */
@@ -5672,7 +5677,7 @@ java_complete_expand_methods ()
        {
          if (flag_emit_class_files)
            write_classfile (current_class);
-         else
+         else if (! flag_syntax_only)
            finish_class (current_class);
        }
     }