This is the mail archive of the
java-patches@sourceware.cygnus.com
mailing list for the Java project.
Patch: local references and GetField
- To: Java Patch List <java-patches at sourceware dot cygnus dot com>
- Subject: Patch: local references and GetField
- From: Tom Tromey <tromey at cygnus dot com>
- Date: 01 Feb 2000 09:33:55 -0700
- Reply-To: tromey at cygnus dot com
I'm committing the appended patch.
It adds local reference support to the two places it was missing.
2000-02-01 Tom Tromey <tromey@cygnus.com>
* jni.cc (_Jv_JNI_GetField): Specialize for jobject.
(_Jv_JNI_GetStaticField): Likewise.
Tom
Index: jni.cc
===================================================================
RCS file: /cvs/java/libgcj/libjava/jni.cc,v
retrieving revision 1.6
diff -u -r1.6 jni.cc
--- jni.cc 2000/02/01 06:14:25 1.6
+++ jni.cc 2000/02/01 16:29:25
@@ -811,7 +811,6 @@
-// FIXME: local reference
template<typename T>
static T
_Jv_JNI_GetField (JNIEnv *, jobject obj, jfieldID field)
@@ -820,6 +819,14 @@
return *ptr;
}
+template<>
+static jobject
+_Jv_JNI_GetField<jobject> (JNIEnv *env, jobject obj, jfieldID field)
+{
+ jobject *ptr = (jobject *) ((char *) obj + field->getOffset ());
+ return _Jv_JNI_NewLocalRef (env, *ptr);
+}
+
template<typename T>
static void
_Jv_JNI_SetField (JNIEnv *, jobject obj, jfieldID field, T value)
@@ -886,6 +893,14 @@
{
T *ptr = (T *) field->u.addr;
return *ptr;
+}
+
+template<>
+static jobject
+_Jv_JNI_GetStaticField<jobject> (JNIEnv *env, jclass, jfieldID field)
+{
+ jobject *ptr = (jobject *) field->u.addr;
+ return _Jv_JNI_NewLocalRef (env, *ptr);
}
template<typename T>