jni.cc (wrap_value<jobject>, [...]): Removed.

* jni.cc (wrap_value<jobject>, wrap_value<jclass>): Removed.
	(wrap_value<T*>): New specialization.
	(_Jv_JNI_PopLocalFrame): Update env->locals.

From-SVN: r41157
This commit is contained in:
Tom Tromey 2001-04-06 17:38:52 +00:00 committed by Tom Tromey
parent 67916302b5
commit 80a44e089f
2 changed files with 15 additions and 11 deletions

View File

@ -1,3 +1,9 @@
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> 2001-04-05 Tom Tromey <tromey@redhat.com>
* libtool-version: Updated current. * libtool-version: Updated current.

View File

@ -335,6 +335,9 @@ _Jv_JNI_PopLocalFrame (JNIEnv *env, jobject result, int stop)
rf = n; rf = n;
} }
// Update the local frame information.
env->locals = rf;
return result == NULL ? NULL : _Jv_JNI_NewLocalRef (env, result); return result == NULL ? NULL : _Jv_JNI_NewLocalRef (env, result);
} }
@ -369,20 +372,15 @@ wrap_value (JNIEnv *, T value)
return value; return value;
} }
template<> // This specialization is used for jobject, jclass, jstring, jarray,
static jobject // etc.
wrap_value (JNIEnv *env, jobject value) template<typename T>
{ static T *
return value == NULL ? value : _Jv_JNI_NewLocalRef (env, value); wrap_value (JNIEnv *env, T *value)
}
template<>
static jclass
wrap_value (JNIEnv *env, jclass value)
{ {
return (value == NULL return (value == NULL
? value ? value
: (jclass) _Jv_JNI_NewLocalRef (env, (jobject) value)); : (T *) _Jv_JNI_NewLocalRef (env, (jobject) value));
} }