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 $
-
*/
#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;
}
/* 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);
}