Merge to subtype-trunk (manually: src/vm/linker.hpp, src/vm/vftbl.hpp)
[cacao.git] / tests / gc / native.c
1 #include <jni.h>
2 #include <stdio.h>
3
4 static jobject ref = NULL;
5 static jobject weak_ref = NULL;
6
7 JNIEXPORT void JNICALL Java_NativeGlobalRef_setReference(JNIEnv *env, jclass c, jobject o)
8 {
9         printf("Native-World: setReference()\n");
10
11         //ref = o;
12         ref = (*env)->NewGlobalRef(env, o);
13
14         return;
15 }
16
17 JNIEXPORT jobject JNICALL Java_NativeGlobalRef_getReference(JNIEnv *env, jclass c)
18 {
19         printf("Native-World: getReference()\n");
20
21         return ref;
22 }
23
24 JNIEXPORT void JNICALL Java_NativeGlobalRef_delReference(JNIEnv *env, jclass c)
25 {
26         printf("Native-World: delReference()\n");
27
28         (*env)->DeleteGlobalRef(env, ref);
29
30         return;
31 }
32
33 JNIEXPORT void JNICALL Java_NativeWeakRef_setWeakReference(JNIEnv *env, jclass c, jobject o)
34 {
35         printf("Native-World: setWeakReference()\n");
36
37         weak_ref = (*env)->NewWeakGlobalRef(env, o);
38
39         return;
40 }
41
42 JNIEXPORT jobject JNICALL Java_NativeWeakRef_getWeakReference(JNIEnv *env, jclass c)
43 {
44         jobject local_ref;
45
46         printf("Native-World: getWeakReference()\n");
47
48         //local_ref = weak_ref;
49         local_ref = (*env)->NewLocalRef(env, weak_ref);
50
51         return local_ref;
52 }
53
54 JNIEXPORT void JNICALL Java_NativeWeakRef_delWeakReference(JNIEnv *env, jclass c)
55 {
56         printf("Native-World: delWeakReference()\n");
57
58         (*env)->DeleteWeakGlobalRef(env, weak_ref);
59
60         return;
61 }