+2001-04-06 Tom Tromey <tromey@redhat.com>
+
+ * jni.cc (wrap_value<jobject>, wrap_value<jclass>): Removed.
+ (wrap_value<T*>): New specialization.
+ (_Jv_JNI_PopLocalFrame): Update env->locals.
+
2001-04-05 Tom Tromey <tromey@redhat.com>
* libtool-version: Updated current.
rf = n;
}
+ // Update the local frame information.
+ env->locals = rf;
+
return result == NULL ? NULL : _Jv_JNI_NewLocalRef (env, result);
}
return value;
}
-template<>
-static jobject
-wrap_value (JNIEnv *env, jobject value)
-{
- return value == NULL ? value : _Jv_JNI_NewLocalRef (env, value);
-}
-
-template<>
-static jclass
-wrap_value (JNIEnv *env, jclass value)
+// This specialization is used for jobject, jclass, jstring, jarray,
+// etc.
+template<typename T>
+static T *
+wrap_value (JNIEnv *env, T *value)
{
return (value == NULL
? value
- : (jclass) _Jv_JNI_NewLocalRef (env, (jobject) value));
+ : (T *) _Jv_JNI_NewLocalRef (env, (jobject) value));
}
\f