This is the mail archive of the java-patches@sourceware.cygnus.com mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Patch: local references and GetField


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>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]