-/* tests/native/testarguments.c - tests argument passing
+/* tests/regression/native/testarguments.c - tests argument passing
- Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+ Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
TU Wien
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Christian Thalinger
-
- $Id: testarguments.c 4558 2006-03-05 23:05:07Z twisti $
-
*/
+#include "config.h"
+
#include <stdio.h>
-#include "config.h"
#include "native/jni.h"
+JNIEXPORT jobject JNICALL Java_testarguments_adr(JNIEnv *env, jclass clazz, jint i)
+{
+ switch (i) {
+ case 1:
+ return (jobject) 0x11111111;
+ case 2:
+ return (jobject) 0x22222222;
+ case 3:
+ return (jobject) 0x33333333;
+ case 4:
+ return (jobject) 0x44444444;
+ case 5:
+ return (jobject) 0x55555555;
+ case 6:
+ return (jobject) 0x66666666;
+ case 7:
+ return (jobject) 0x77777777;
+ case 8:
+ return (jobject) 0x88888888;
+ case 9:
+ return (jobject) 0x99999999;
+ case 10:
+ return (jobject) 0xaaaaaaaa;
+ case 11:
+ return (jobject) 0xbbbbbbbb;
+ case 12:
+ return (jobject) 0xcccccccc;
+ case 13:
+ return (jobject) 0xdddddddd;
+ case 14:
+ return (jobject) 0xeeeeeeee;
+ case 15:
+ return (jobject) 0xffffffff;
+ }
+}
+
+
+JNIEXPORT void JNICALL Java_testarguments_np(JNIEnv *env, jclass clazz, jobject o)
+{
+#if SIZEOF_VOID_P == 8
+ printf(" 0x%lx", (long) o);
+#else
+ printf(" 0x%x", (int) o);
+#endif
+
+ fflush(stdout);
+}
+
+
JNIEXPORT void JNICALL Java_testarguments_nisub(JNIEnv *env, jclass clazz, jint a, jint b, jint c, jint d, jint e, jint f, jint g, jint h, jint i, jint j, jint k, jint l, jint m, jint n, jint o)
{
jmethodID mid;
mid = (*env)->GetStaticMethodID(env, clazz, "jdsub", "(DDDDDDDDDDDDDDD)V");
if (mid == 0) {
- printf("native: couldn't find jfsub\n");
+ printf("native: couldn't find jdsub\n");
+ return;
+ }
+
+ (*env)->CallStaticVoidMethod(env, clazz, mid, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
+}
+
+
+JNIEXPORT void JNICALL Java_testarguments_nasub(JNIEnv *env, jclass clazz, jobject a, jobject b, jobject c, jobject d, jobject e, jobject f, jobject g, jobject h, jobject i, jobject j, jobject k, jobject l, jobject m, jobject n, jobject o)
+{
+ jmethodID mid;
+
+#if SIZEOF_VOID_P == 8
+ printf("java-native: 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx\n", (long) a, (long) b, (long) c, (long) d, (long) e, (long) f, (long) g, (long) h, (long) i, (long) j, (long) k, (long) l, (long) m, (long) n, (long) o);
+#else
+ printf("java-native: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", (int) a, (int) b, (int) c, (int) d, (int) e, (int) f, (int) g, (int) h, (int) i, (int) j, (int) k, (int) l, (int) m, (int) n, (int) o);
+#endif
+
+ fflush(stdout);
+
+ mid = (*env)->GetStaticMethodID(env, clazz, "jasub", "(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V");
+
+ if (mid == 0) {
+ printf("native: couldn't find jasub\n");
+ return;
+ }
+
+ (*env)->CallStaticVoidMethod(env, clazz, mid, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
+}
+
+
+JNIEXPORT void JNICALL Java_testarguments_nmsub(JNIEnv *env, jclass clazz, jint a, jlong b, jfloat c, jdouble d, jint e, jlong f, jfloat g, jdouble h, jint i, jlong j, jfloat k, jdouble l, jint m, jlong n, jfloat o)
+{
+ jmethodID mid;
+ union {
+ jint i;
+ jlong l;
+ jfloat f;
+ jdouble d;
+ } x;
+
+ printf("java-native:");
+
+ printf(" 0x%x", a);
+ printf(" 0x%llx", b);
+ x.f = c; printf(" 0x%x", x.i);
+ x.d = d; printf(" 0x%llx", x.l);
+ printf(" 0x%x", e);
+ printf(" 0x%llx", f);
+ x.f = g; printf(" 0x%x", x.i);
+ x.d = h; printf(" 0x%llx", x.l);
+ printf(" 0x%x", i);
+ printf(" 0x%llx", j);
+ x.f = k; printf(" 0x%x", x.i);
+ x.d = l; printf(" 0x%llx", x.l);
+ printf(" 0x%x", m);
+ printf(" 0x%llx", n);
+ x.f = o; printf(" 0x%x", x.i);
+
+ printf("\n");
+ fflush(stdout);
+
+ mid = (*env)->GetStaticMethodID(env, clazz, "jmsub", "(IJFDIJFDIJFDIJF)V");
+
+ if (mid == 0) {
+ printf("native: couldn't find jmsub\n");
return;
}