* Removed all Id tags.
[cacao.git] / src / native / vm / java_lang_reflect_Method.c
index 9d3f3d12ba620a476f483ee738b6f5ea34db73d8..b8c9646b206d3e102a2c86efcda407706e047f12 100644 (file)
@@ -22,8 +22,6 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_reflect_Method.c 8063 2007-06-11 14:44:58Z twisti $
-
 */
 
 
@@ -34,6 +32,7 @@
 #include "vm/types.h"
 
 #include "native/jni.h"
+#include "native/llni.h"
 #include "native/native.h"
 
 #include "native/include/java_lang_Object.h"
  * Method:    invoke
  * Signature: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
  */
-java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_objectarray *args)
+java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_handle_objectarray_t *args)
 {
        classinfo  *c;
        methodinfo *m;
+       s4          override;
+       int32_t     slot;
+
+       LLNI_field_get_cls(this, clazz, c);
+       LLNI_field_get_val(this, slot , slot);
+       m = &(c->methods[slot]);
 
-       c = (classinfo *) this->declaringClass;
-       m = &(c->methods[this->slot]);
 
        /* check method access */
 
        /* check if we should bypass security checks (AccessibleObject) */
 
-       if (this->flag == false) {
+#if defined(WITH_CLASSPATH_GNU)
+       LLNI_field_get_val(this, flag, override);
+#elif defined(WITH_CLASSPATH_SUN)
+       LLNI_field_get_val(this, override, override);
+#else
+# error unknown classpath configuration
+#endif
+
+       if (override == false) {
                if (!access_check_method(m, 1))
                        return NULL;
        }
@@ -78,7 +89,7 @@ java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *
 
        /* call the Java method via a helper function */
 
-       return (java_lang_Object *) _Jv_jni_invokeNative(m, (jobject) o, args);
+       return (java_lang_Object *) _Jv_jni_invokeNative(m, (java_handle_t *) o, args);
 }