diff options
author | Andrew Haley <aph@redhat.com> | 2005-12-08 14:19:13 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2005-12-08 14:19:13 +0000 |
commit | 9edd0f5e69ca58b69405b4422907c07abdcc5a7e (patch) | |
tree | e764f1b2a5c7d9e67d1a6fc89048373154d65bc7 /libjava/java | |
parent | e00388458d34ab0954df5d12c9d45ee0fd794e58 (diff) | |
download | gcc-9edd0f5e69ca58b69405b4422907c07abdcc5a7e.zip gcc-9edd0f5e69ca58b69405b4422907c07abdcc5a7e.tar.gz gcc-9edd0f5e69ca58b69405b4422907c07abdcc5a7e.tar.bz2 |
Object.h (throwNoSuchMethodError): New method.
2005-12-08 Andrew Haley <aph@redhat.com>
* 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.
From-SVN: r108231
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/lang/Object.h | 3 | ||||
-rw-r--r-- | libjava/java/lang/Object.java | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/libjava/java/lang/Object.h b/libjava/java/lang/Object.h index bf68a72..54fd447 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 dbe3411..e81a48a 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. } |