diff options
author | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-03-05 16:06:27 +0000 |
---|---|---|
committer | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-03-05 16:06:27 +0000 |
commit | 2abaa5a3b86121453d7be0000f70418c08784c0d (patch) | |
tree | db2cc96f747dfe385b80f218bee0aca23560701e /libjava/java/lang/natClass.cc | |
parent | 3dbf7319f6bfc98d7cfc1318538554278e42648a (diff) | |
download | ppe42-gcc-2abaa5a3b86121453d7be0000f70418c08784c0d.tar.gz ppe42-gcc-2abaa5a3b86121453d7be0000f70418c08784c0d.zip |
2007-03-05 Andrew Haley <aph@redhat.com>
* java/lang/reflect/natVMProxy.cc (ncode_closure.meth): Delete.
(generateProxyClass): Don't pass method to ncode.
(run_proxy): Call _Jv_GetReflectedMethod to find the proxy method.
* java/lang/reflect/Method.h: Rebuild.
* java/lang/reflect/Method.java (internalGetParameterTypes,
internalGetExceptionTypes): New methods.
* headers.txt (class java/lang/reflect/Method): Declare
_Jv_GetReflectedMethod. Be its friend.
* java/lang/natClass.cc (_Jv_GetReflectedMethod): New method.
* java/lang/Class.h: Declare it. Be its friend.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122554 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/natClass.cc')
-rw-r--r-- | libjava/java/lang/natClass.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 078f8422b26..cec519fd502 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -1630,6 +1630,26 @@ _Jv_LookupDeclaredMethod (jclass klass, _Jv_Utf8Const *name, return NULL; } +java::lang::reflect::Method * +_Jv_GetReflectedMethod (jclass klass, _Jv_Utf8Const *name, + _Jv_Utf8Const *signature) +{ + for (; klass; klass = klass->getSuperclass()) + { + _Jv_Method *meth = _Jv_GetMethodLocal (klass, name, signature); + if (meth) + { + using namespace java::lang::reflect; + Method *rmethod = new Method (); + rmethod->offset = (char*) meth - (char*) klass->methods; + rmethod->declaringClass = klass; + return rmethod; + } + } + + return NULL; +} + #ifdef HAVE_TLS // NOTE: MCACHE_SIZE should be a power of 2 minus one. |