* Removed all Id tags.
[cacao.git] / tests / regression / native / testarguments.c
index e1af26c2269fc3eff3eaf6d365960eb2b39eb4aa..d9e8e5ad5d4e9d5fcb178c9d7683e3c1e32ea5d1 100644 (file)
@@ -1,6 +1,6 @@
-/* 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;
@@ -145,7 +189,72 @@ JNIEXPORT void JNICALL Java_testarguments_ndsub(JNIEnv *env, jclass clazz, jdoub
     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;
     }