diff options
author | Tom Tromey <tromey@cygnus.com> | 2000-02-01 16:32:21 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-02-01 16:32:21 +0000 |
commit | 5dc489c1909701811d19e2ad2e63550ee5548082 (patch) | |
tree | a84c176a6bf2e08d67dd88309611bc4c55de09b7 /libjava | |
parent | ef2362a417068ea86c9019413ab4c72be3b6a69a (diff) | |
download | gcc-5dc489c1909701811d19e2ad2e63550ee5548082.tar.gz |
jni.cc (_Jv_JNI_GetField): Specialize for jobject.
* jni.cc (_Jv_JNI_GetField): Specialize for jobject.
(_Jv_JNI_GetStaticField): Likewise.
From-SVN: r31735
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 5 | ||||
-rw-r--r-- | libjava/jni.cc | 17 |
2 files changed, 21 insertions, 1 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 93db6e7a45c..4690c3c2c81 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2000-02-01 Tom Tromey <tromey@cygnus.com> + + * jni.cc (_Jv_JNI_GetField): Specialize for jobject. + (_Jv_JNI_GetStaticField): Likewise. + 2000-01-31 Tom Tromey <tromey@cygnus.com> * prims.cc (_Jv_MallocUnchecked): New function. diff --git a/libjava/jni.cc b/libjava/jni.cc index 0b51fce35a4..ff8f9a23fb2 100644 --- a/libjava/jni.cc +++ b/libjava/jni.cc @@ -811,7 +811,6 @@ _Jv_JNI_NewObjectA (JNIEnv *env, jclass klass, jmethodID id, -// FIXME: local reference template<typename T> static T _Jv_JNI_GetField (JNIEnv *, jobject obj, jfieldID field) @@ -820,6 +819,14 @@ _Jv_JNI_GetField (JNIEnv *, jobject obj, jfieldID field) 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) @@ -888,6 +895,14 @@ _Jv_JNI_GetStaticField (JNIEnv *, jclass, jfieldID field) 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> static void _Jv_JNI_SetStaticField (JNIEnv *, jclass, jfieldID field, T value) |