* expr.c (build_invokeinterface): Abort if method's context is not
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Jan 2003 20:53:54 +0000 (20:53 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Jan 2003 20:53:54 +0000 (20:53 +0000)
an interface.

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

gcc/java/ChangeLog
gcc/java/expr.c

index bdb9917..5d42c0a 100644 (file)
@@ -1,5 +1,10 @@
 2003-01-22  Tom Tromey  <tromey@redhat.com>
 
+       * expr.c (build_invokeinterface): Abort if method's context is not
+       an interface.
+
+2003-01-22  Tom Tromey  <tromey@redhat.com>
+
        * gcj.texi (Input and output files): Mention non-class entries.
        * decl.c (java_init_decl_processing): Call
        init_resource_processing.
index e5c677c..bf1f41b 100644 (file)
@@ -1901,15 +1901,16 @@ build_invokeinterface (tree dtable, tree method)
      abstract nor static.  */
            
   if (class_ident == NULL_TREE)
-    {
-      class_ident = get_identifier ("class");
-    }
+    class_ident = get_identifier ("class");
 
-  dtable = build_java_indirect_ref (dtable_type, dtable, flag_check_references);
+  dtable = build_java_indirect_ref (dtable_type, dtable,
+                                   flag_check_references);
   dtable = build (COMPONENT_REF, class_ptr_type, dtable,
                  lookup_field (&dtable_type, class_ident));
 
   interface = DECL_CONTEXT (method);
+  if (! CLASS_INTERFACE (TYPE_NAME (interface)))
+    abort ();
   layout_class_methods (interface);
   
   if (flag_indirect_dispatch)