/[classpath]/classpath/native/jni/classpath/jcl.c
ViewVC logotype

Diff of /classpath/native/jni/classpath/jcl.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.11.2.2 by gnu_andrew, Sun Aug 7 18:34:12 2005 UTC revision 1.11.2.3 by gnu_andrew, Tue Sep 20 18:46:37 2005 UTC
# Line 1  Line 1 
1  /* jcl.c  /* jcl.c
2     Copyright (C) 1998 Free Software Foundation, Inc.     Copyright (C) 1998, 2005 Free Software Foundation, Inc.
3    
4  This file is part of GNU Classpath.  This file is part of GNU Classpath.
5    
# Line 193  JCL_NewRawDataObject (JNIEnv * env, void Line 193  JCL_NewRawDataObject (JNIEnv * env, void
193  {  {
194    if (rawDataClass == NULL)    if (rawDataClass == NULL)
195      {      {
196  #ifdef POINTERS_ARE_64BIT        jclass tmp;
197    #if SIZEOF_VOID_P == 8
198        rawDataClass = (*env)->FindClass (env, "gnu/classpath/Pointer64");        rawDataClass = (*env)->FindClass (env, "gnu/classpath/Pointer64");
199        if (rawDataClass == NULL)        if (rawDataClass == NULL)
200          {          {
# Line 243  JCL_NewRawDataObject (JNIEnv * env, void Line 244  JCL_NewRawDataObject (JNIEnv * env, void
244          }          }
245    
246  #endif  #endif
247        (*env)->DeleteLocalRef(env, rawDataClass);        tmp = (*env)->NewGlobalRef (env, rawDataClass);
248        rawDataClass = (*env)->NewGlobalRef (env, rawDataClass);        if (tmp == NULL)
       if (rawDataClass == NULL)  
249          {          {
250            JCL_ThrowException (env, "java/lang/InternalError",            JCL_ThrowException (env, "java/lang/InternalError",
251                                "unable to create an internal global ref");                                "unable to create an internal global ref");
252            return NULL;            return NULL;
253          }          }
254          (*env)->DeleteLocalRef(env, rawDataClass);
255          rawDataClass = tmp;
256      }      }
257    
258  #ifdef POINTERS_ARE_64BIT  #if SIZEOF_VOID_P == 8
259    return (*env)->NewObject (env, rawDataClass, rawData_mid, (jlong) data);    return (*env)->NewObject (env, rawDataClass, rawData_mid, (jlong) data);
260  #else  #else
261    return (*env)->NewObject (env, rawDataClass, rawData_mid, (jint) data);    return (*env)->NewObject (env, rawDataClass, rawData_mid, (jint) data);
# Line 263  JCL_NewRawDataObject (JNIEnv * env, void Line 265  JCL_NewRawDataObject (JNIEnv * env, void
265  JNIEXPORT void * JNICALL  JNIEXPORT void * JNICALL
266  JCL_GetRawData (JNIEnv * env, jobject rawdata)  JCL_GetRawData (JNIEnv * env, jobject rawdata)
267  {  {
268  #ifdef POINTERS_ARE_64BIT  #if SIZEOF_VOID_P == 8
269    return (void *) (*env)->GetLongField (env, rawdata, rawData_fid);    return (void *) (*env)->GetLongField (env, rawdata, rawData_fid);
270  #else  #else
271    return (void *) (*env)->GetIntField (env, rawdata, rawData_fid);    return (void *) (*env)->GetIntField (env, rawdata, rawData_fid);

Legend:
Removed from v.1.11.2.2  
changed lines
  Added in v.1.11.2.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26