aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/decl.c
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 /gcc/java/decl.c
parent92b5fbc5aebba9d16fb3247ad0b77020132a2427 (diff)
downloadgcc-fbb4c46b2d6b1cb70f05c25e01462d90282aece5.zip
gcc-fbb4c46b2d6b1cb70f05c25e01462d90282aece5.tar.gz
gcc-fbb4c46b2d6b1cb70f05c25e01462d90282aece5.tar.bz2
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 'gcc/java/decl.c')
-rw-r--r--gcc/java/decl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 891e4db..5240fba 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -1107,6 +1107,15 @@ java_init_decl_processing (void)
TREE_THIS_VOLATILE (soft_nullpointer_node) = 1;
TREE_SIDE_EFFECTS (soft_nullpointer_node) = 1;
+ soft_abstractmethod_node
+ = builtin_function ("_Jv_ThrowAbstractMethodError",
+ build_function_type (void_type_node, endlink),
+ 0, NOT_BUILT_IN, NULL, NULL_TREE);
+ /* Mark soft_abstractmethod_node as a `noreturn' function with side
+ effects. */
+ TREE_THIS_VOLATILE (soft_abstractmethod_node) = 1;
+ TREE_SIDE_EFFECTS (soft_abstractmethod_node) = 1;
+
t = tree_cons (NULL_TREE, class_ptr_type,
tree_cons (NULL_TREE, object_ptr_type_node, endlink));
soft_checkcast_node