From: Christian Thalinger Date: Thu, 7 Aug 2008 21:33:05 +0000 (-0400) Subject: * src/vmcore/javaobjects.hpp (java_lang_reflect_Field::get_field): New X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=c0833bef371fdba884acb9976c069ce35e121eea;p=cacao.git * src/vmcore/javaobjects.hpp (java_lang_reflect_Field::get_field): New function. (java_lang_reflect_Method::invoke): Likewise. (java_lang_reflect_Method::get_method): Likewise. (java_lang_reflect_Method::get_override): Likewise. * src/native/vm/gnuclasspath/java_lang_reflect_VMMethod.cpp (invoke): Use new invoke function. --HG-- branch : twisti --- diff --git a/src/native/vm/gnuclasspath/java_lang_reflect_VMMethod.cpp b/src/native/vm/gnuclasspath/java_lang_reflect_VMMethod.cpp index 4eea085f2..a368990b5 100644 --- a/src/native/vm/gnuclasspath/java_lang_reflect_VMMethod.cpp +++ b/src/native/vm/gnuclasspath/java_lang_reflect_VMMethod.cpp @@ -120,13 +120,10 @@ JNIEXPORT jobjectArray JNICALL Java_java_lang_reflect_VMMethod_getExceptionTypes */ JNIEXPORT jobject JNICALL Java_java_lang_reflect_VMMethod_invoke(JNIEnv *env, jobject _this, jobject o, jobjectArray args) { - java_lang_reflect_VMMethod rvmm(_this); - java_lang_reflect_Method rm(rvmm.get_m()); - - methodinfo* m = rvmm.get_method(); - int32_t override = rm.get_flag(); + java_lang_reflect_VMMethod jlrvmm(_this); + java_lang_reflect_Method jlrm(jlrvmm.get_m()); - java_handle_t* result = Reflection::method_invoke(m, (java_handle_t*) o, (java_handle_objectarray_t*) args, override); + java_handle_t* result = jlrm.invoke((java_handle_t*) o, (java_handle_objectarray_t*) args); return (jobject) result; } diff --git a/src/vmcore/javaobjects.hpp b/src/vmcore/javaobjects.hpp index 27105b8e1..aaae19b39 100644 --- a/src/vmcore/javaobjects.hpp +++ b/src/vmcore/javaobjects.hpp @@ -1342,6 +1342,9 @@ public: // Setters. inline void set_f(java_handle_t* value); + + // Convenience functions. + inline fieldinfo* get_field() const; }; @@ -1385,6 +1388,13 @@ inline void java_lang_reflect_Field::set_f(java_handle_t* value) } +inline fieldinfo* java_lang_reflect_Field::get_field() const +{ + java_lang_reflect_VMField jlrvmf(get_f()); + return jlrvmf.get_field(); +} + + /** * GNU Classpath java/lang/reflect/VMMethod * @@ -1574,12 +1584,18 @@ public: java_lang_reflect_Method(jobject h); java_lang_reflect_Method(methodinfo* m); + java_handle_t* invoke(java_handle_t* o, java_handle_objectarray_t* args); + // Getters. inline int32_t get_flag() const; inline java_handle_t* get_m() const; // Setters. inline void set_m(java_handle_t* value); + + // Convenience functions. + inline methodinfo* get_method () const; + inline int32_t get_override() const; }; @@ -1623,6 +1639,18 @@ inline void java_lang_reflect_Method::set_m(java_handle_t* value) } +inline methodinfo* java_lang_reflect_Method::get_method() const +{ + java_lang_reflect_VMMethod jlrvmm(get_m()); + return jlrvmm.get_method(); +} + +inline int32_t java_lang_reflect_Method::get_override() const +{ + return get_flag(); +} + + /** * GNU Classpath java/nio/Buffer *