summaryrefslogtreecommitdiff
path: root/libjava/defineclass.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2005-06-15 19:11:43 +0000
committerTom Tromey <tromey@gcc.gnu.org>2005-06-15 19:11:43 +0000
commitfbb4c46b2d6b1cb70f05c25e01462d90282aece5 (patch)
treed75a57626d585261ba5d3eae3b74954aa5b37586 /libjava/defineclass.cc
parent92b5fbc5aebba9d16fb3247ad0b77020132a2427 (diff)
downloadgcc-fbb4c46b2d6b1cb70f05c25e01462d90282aece5.tar.gz
re PR libgcj/21906 (hang when invoking abstract method)
gcc/java/: PR libgcj/21906: * class.c (make_method_value): Use soft_abstractmethod_node for abstract method. * java-tree.h (soft_abstractmethod_node): New define. (JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant. * decl.c (java_init_decl_processing): Initialize soft_abstractmethod_node. libjava/: PR libgcj/21906: * defineclass.cc (handleMethodsEnd): Set ncode for abstract methods. * include/jvm.h (_Jv_ThrowAbstractMethodError): Declare. * link.cc (_Jv_ThrowAbstractMethodError): Renamed. No longer static. (append_partial_itable): Use it. (set_vtable_entries): Likewise. From-SVN: r100992
Diffstat (limited to 'libjava/defineclass.cc')
-rw-r--r--libjava/defineclass.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/libjava/defineclass.cc b/libjava/defineclass.cc
index 111b1fb2ca2..7564957dc43 100644
--- a/libjava/defineclass.cc
+++ b/libjava/defineclass.cc
@@ -1288,7 +1288,7 @@ void _Jv_ClassReader::handleMethod
throw_class_format_error ("erroneous method access flags");
// FIXME: JVM spec S4.6: if ABSTRACT modifier is set, verify other
- // flags are not set. Verify flags for interface methods. Verifiy
+ // flags are not set. Verify flags for interface methods. Verify
// modifiers for initializers.
}
}
@@ -1378,6 +1378,7 @@ void _Jv_ClassReader::handleMethodsEnd ()
{
if (def_interp->interpreted_methods[i] != 0)
throw_class_format_error ("code provided for abstract method");
+ method->ncode = (void *) &_Jv_ThrowAbstractMethodError;
}
else
{