From fbb4c46b2d6b1cb70f05c25e01462d90282aece5 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 15 Jun 2005 19:11:43 +0000 Subject: 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 --- gcc/java/class.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gcc/java/class.c') diff --git a/gcc/java/class.c b/gcc/java/class.c index a555bf0..f444121 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -1315,7 +1315,10 @@ make_method_value (tree mdecl) index = integer_minus_one_node; code = null_pointer_node; - if (!METHOD_ABSTRACT (mdecl)) + if (METHOD_ABSTRACT (mdecl)) + code = build1 (ADDR_EXPR, nativecode_ptr_type_node, + soft_abstractmethod_node); + else code = build1 (ADDR_EXPR, nativecode_ptr_type_node, make_local_function_alias (mdecl)); START_RECORD_CONSTRUCTOR (minit, method_type_node); -- cgit v1.1