aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natClass.cc
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2007-03-05 16:06:27 +0000
committerAndrew Haley <aph@gcc.gnu.org>2007-03-05 16:06:27 +0000
commita29114a3bec5458073c39a324324868d4bac2d24 (patch)
treedb2cc96f747dfe385b80f218bee0aca23560701e /libjava/java/lang/natClass.cc
parentf4a2a1deec8e1c2c8f9ed80d166a37341fbafd19 (diff)
downloadgcc-a29114a3bec5458073c39a324324868d4bac2d24.zip
gcc-a29114a3bec5458073c39a324324868d4bac2d24.tar.gz
gcc-a29114a3bec5458073c39a324324868d4bac2d24.tar.bz2
natVMProxy.cc (ncode_closure.meth): Delete.
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. From-SVN: r122554
Diffstat (limited to 'libjava/java/lang/natClass.cc')
-rw-r--r--libjava/java/lang/natClass.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index 078f842..cec519f 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.