* merged default branch into jitcache-arm-x86 branch
[cacao.git] / tests / gc / native.c
index cc0a0e621a5ae4b8c90ee52f8b2b2e5b2b378956..07063b2e7694f8bbd40c8fb19636f4cd3ca8c907 100644 (file)
@@ -2,6 +2,7 @@
 #include <stdio.h>
 
 static jobject ref = NULL;
+static jobject weak_ref = NULL;
 
 JNIEXPORT void JNICALL Java_NativeGlobalRef_setReference(JNIEnv *env, jclass c, jobject o)
 {
@@ -19,3 +20,42 @@ JNIEXPORT jobject JNICALL Java_NativeGlobalRef_getReference(JNIEnv *env, jclass
 
        return ref;
 }
+
+JNIEXPORT void JNICALL Java_NativeGlobalRef_delReference(JNIEnv *env, jclass c)
+{
+       printf("Native-World: delReference()\n");
+
+       (*env)->DeleteGlobalRef(env, ref);
+
+       return;
+}
+
+JNIEXPORT void JNICALL Java_NativeWeakRef_setWeakReference(JNIEnv *env, jclass c, jobject o)
+{
+       printf("Native-World: setWeakReference()\n");
+
+       weak_ref = (*env)->NewWeakGlobalRef(env, o);
+
+       return;
+}
+
+JNIEXPORT jobject JNICALL Java_NativeWeakRef_getWeakReference(JNIEnv *env, jclass c)
+{
+       jobject local_ref;
+
+       printf("Native-World: getWeakReference()\n");
+
+       //local_ref = weak_ref;
+       local_ref = (*env)->NewLocalRef(env, weak_ref);
+
+       return local_ref;
+}
+
+JNIEXPORT void JNICALL Java_NativeWeakRef_delWeakReference(JNIEnv *env, jclass c)
+{
+       printf("Native-World: delWeakReference()\n");
+
+       (*env)->DeleteWeakGlobalRef(env, weak_ref);
+
+       return;
+}