aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2001-04-06 17:38:52 +0000
committerTom Tromey <tromey@gcc.gnu.org>2001-04-06 17:38:52 +0000
commit80a44e089f4c87786b68642620d9edb9d03a6c79 (patch)
tree6bbdd0f12fad77699643f7bfd8b5ea26671da489 /libjava
parent67916302b5485823a5b190ef2f33c174b8002a6e (diff)
downloadgcc-80a44e089f4c87786b68642620d9edb9d03a6c79.zip
gcc-80a44e089f4c87786b68642620d9edb9d03a6c79.tar.gz
gcc-80a44e089f4c87786b68642620d9edb9d03a6c79.tar.bz2
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
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/jni.cc20
2 files changed, 15 insertions, 11 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 36d8787..b68b23a 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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>
* libtool-version: Updated current.
diff --git a/libjava/jni.cc b/libjava/jni.cc
index d41dd01..6190f4f 100644
--- a/libjava/jni.cc
+++ b/libjava/jni.cc
@@ -335,6 +335,9 @@ _Jv_JNI_PopLocalFrame (JNIEnv *env, jobject result, int stop)
rf = n;
}
+ // Update the local frame information.
+ env->locals = rf;
+
return result == NULL ? NULL : _Jv_JNI_NewLocalRef (env, result);
}
@@ -369,20 +372,15 @@ wrap_value (JNIEnv *, T value)
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));
}