diff options
author | Tom Tromey <tromey@redhat.com> | 2005-06-15 19:11:43 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2005-06-15 19:11:43 +0000 |
commit | fbb4c46b2d6b1cb70f05c25e01462d90282aece5 (patch) | |
tree | d75a57626d585261ba5d3eae3b74954aa5b37586 /libjava/defineclass.cc | |
parent | 92b5fbc5aebba9d16fb3247ad0b77020132a2427 (diff) | |
download | gcc-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.cc | 3 |
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 { |