From fb2839e8929e45aa232f760cd3485dad76513c5d Mon Sep 17 00:00:00 2001 From: aph Date: Thu, 8 Dec 2005 14:19:13 +0000 Subject: 2005-12-08 Andrew Haley * java/lang/Object.h (throwNoSuchMethodError): New method. * java/lang/Object.java (throwNoSuchMethodError): New method. * include/jvm.h (_Jv_ThrowNoSuchFieldError): Declare. * link.cc (_Jv_ThrowNoSuchFieldError): New. (link_symbol_table): Don't throw a NoSuchFieldError if a field is missing. Instead, set the otable entry to zero. (link_symbol_table): If we don't find a nonstatic method, insert the vtable offset of Object.throwNoSuchMethodError() into the otable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108231 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/lang/Object.h | 3 +++ libjava/java/lang/Object.java | 8 ++++++++ 2 files changed, 11 insertions(+) (limited to 'libjava/java') diff --git a/libjava/java/lang/Object.h b/libjava/java/lang/Object.h index bf68a72399b..54fd447d116 100644 --- a/libjava/java/lang/Object.h +++ b/libjava/java/lang/Object.h @@ -83,6 +83,9 @@ private: // Initialize the sync_info field. Not called with JV_HASH_SYNCHRONIZATION. void sync_init (void); + +public: + virtual void throwNoSuchMethodError (void); }; #endif /* __JAVA_LANG_OBJECT_H__ */ diff --git a/libjava/java/lang/Object.java b/libjava/java/lang/Object.java index dbe3411c5ed..e81a48a9fb7 100644 --- a/libjava/java/lang/Object.java +++ b/libjava/java/lang/Object.java @@ -506,6 +506,14 @@ public class Object // completeness (some day we'll be able to auto-generate Object.h). private final native void sync_init(); + // If we fail to find a method at class loading time we put the + // vtable index of this method in its place: any attempt to call + // that method will result in an error. + void throwNoSuchMethodError() + { + throw new NoSuchMethodError("in " + getClass()); + } + // Note that we don't mention the sync_info field here. If we do, // jc1 will not work correctly. } -- cgit v1.2.3