/* tests/regression/native/testarguments.c - tests argument passing
- 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
+ Copyright (C) 1996-2005, 2006, 2007, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
This file is part of CACAO.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: testarguments.c 8123 2007-06-20 23:50:55Z michi $
-
*/
#include "config.h"
#include <stdio.h>
+#include <stdlib.h>
-#include "native/jni.h"
+#include "native/jni.hpp"
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;
- }
+ intptr_t p;
+
+ p = 0x11111111 * ((intptr_t) i);
+
+#if defined(ENABLE_HANDLES)
+ return (*env)->NewLocalRef(env, &p);
+#else
+ return (jobject) p;
+#endif
}
JNIEXPORT void JNICALL Java_testarguments_np(JNIEnv *env, jclass clazz, jobject o)
{
+#if defined(ENABLE_HANDLES)
+ intptr_t p = *((intptr_t *) o);
+#else
+ intptr_t p = (intptr_t) o;
+#endif
+
#if SIZEOF_VOID_P == 8
- printf(" 0x%lx", (long) o);
+ printf(" 0x%lx", (long) p);
#else
- printf(" 0x%x", (int) o);
+ printf(" 0x%x", (int) p);
#endif
fflush(stdout);
{
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);
+#if defined(ENABLE_HANDLES)
+
+# 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
+
#else
+
+# 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
+
#endif
fflush(stdout);