[kaffe] CVS kaffe (robilad): Resynced with gnu classpath: nio
direct byte buffer fixes
Kaffe CVS
cvs-commits at kaffe.org
Thu Feb 10 15:30:52 PST 2005
PatchSet 5518
Date: 2005/02/10 23:23:28
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with gnu classpath: nio direct byte buffer fixes
2005-02-10 Dalibor Topic <robilad at kaffe.org>
Resynced with GNU Classpath.
2005-02-08 Michael Koch <konqueror at gmx.de>
* native/jni/java-nio/java_nio_VMDirectByteBuffer.c
(NIOGetPointer): Handle case of pointer size != 32 bit.
(NIOGetRawData): Likewise.
(Java_java_nio_VMDirectByteBuffer_init): Likewise.
Fixed asking for primitive type 'long'.
Members:
ChangeLog:1.3562->1.3563
libraries/clib/nio/java_nio_VMDirectByteBuffer.c:1.3->1.4
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3562 kaffe/ChangeLog:1.3563
--- kaffe/ChangeLog:1.3562 Thu Feb 10 23:11:11 2005
+++ kaffe/ChangeLog Thu Feb 10 23:23:28 2005
@@ -2,6 +2,18 @@
Resynced with GNU Classpath.
+ 2005-02-08 Michael Koch <konqueror at gmx.de>
+
+ * native/jni/java-nio/java_nio_VMDirectByteBuffer.c
+ (NIOGetPointer): Handle case of pointer size != 32 bit.
+ (NIOGetRawData): Likewise.
+ (Java_java_nio_VMDirectByteBuffer_init): Likewise.
+ Fixed asking for primitive type 'long'.
+
+2005-02-10 Dalibor Topic <robilad at kaffe.org>
+
+ Resynced with GNU Classpath.
+
2005-02-07 Mark Wielaard <mark at klomp.org>
* java/util/ResourceBundle.java (getObject): Clarify
Index: kaffe/libraries/clib/nio/java_nio_VMDirectByteBuffer.c
diff -u kaffe/libraries/clib/nio/java_nio_VMDirectByteBuffer.c:1.3 kaffe/libraries/clib/nio/java_nio_VMDirectByteBuffer.c:1.4
--- kaffe/libraries/clib/nio/java_nio_VMDirectByteBuffer.c:1.3 Mon Dec 20 03:40:04 2004
+++ kaffe/libraries/clib/nio/java_nio_VMDirectByteBuffer.c Thu Feb 10 23:23:32 2005
@@ -1,5 +1,5 @@
/* java_nio_VMDirectByteBuffer.c - Native methods for VMDirectByteBuffer
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -7,7 +7,7 @@
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
-
+
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
@@ -55,14 +55,27 @@
static void *
NIOGetPointer (JNIEnv *env, jobject rawdata)
{
+#if SIZEOF_VOID_P == 4
return (void *) (*env)->GetIntField (env, rawdata, fieldNativePointer);
+#elif SIZEOF_VOID_P == 8
+ return (void *) (*env)->GetLongField (env, rawdata, fieldNativePointer);
+#else
+#error unsupported pointer size
+#endif
}
static jobject
NIOGetRawData (JNIEnv *env, void *pointer)
{
+#if SIZEOF_VOID_P == 4
+ return (*env)->NewObject (env, classRawData, methodRawDataInit,
+ (jint) pointer);
+#elif SIZEOF_VOID_P == 8
return (*env)->NewObject (env, classRawData, methodRawDataInit,
- (jint) pointer);
+ (jlong) pointer);
+#else
+#error unsupported pointer size
+#endif
}
JNIEXPORT void JNICALL
@@ -74,52 +87,54 @@
if (classRawData == NULL)
{
JCL_ThrowException(env, "java/lang/InternalError",
- "unable to find internal class");
+ "unable to find internal class");
return;
}
methodRawDataInit = (*env)->GetMethodID (env, classRawData,
- "<init>", "(I)V");
+ "<init>", "(I)V");
if (methodRawDataInit == NULL)
{
JCL_ThrowException(env, "java/lang/InternalError",
- "unable to find internal constructor");
+ "unable to find internal constructor");
return;
}
-
+
fieldNativePointer = (*env)->GetFieldID (env, classRawData, "data", "I");
if (fieldNativePointer == NULL)
{
JCL_ThrowException(env, "java/lang/InternalError",
- "unable to find internal field");
+ "unable to find internal field");
return;
}
-#else /* SIZEOF_VOID_P != 4 */
+#elif SIZEOF_VOID_P == 8
classRawData = (*env)->FindClass (env, "gnu/classpath/RawData64");
if (classRawData == NULL)
{
JCL_ThrowException(env, "java/lang/InternalError",
- "unable to find internal class");
+ "unable to find internal class");
return;
}
methodRawDataInit = (*env)->GetMethodID (env, classRawData,
- "<init>", "(L)V");
+ "<init>", "(J)V");
if (methodRawDataInit == NULL)
{
JCL_ThrowException(env, "java/lang/InternalError",
- "unable to find internal constructor");
+ "unable to find internal constructor");
return;
}
-
- fieldNativePointer = (*env)->GetFieldID (env, classRawData, "data", "L");
+
+ fieldNativePointer = (*env)->GetFieldID (env, classRawData, "data", "J");
if (fieldNativePointer == NULL)
{
JCL_ThrowException(env, "java/lang/InternalError",
- "unable to find internal field");
+ "unable to find internal field");
return;
}
-#endif /* SIZEOF_VOID_P != 4 */
+#else
+#error unsupported pointer size
+#endif
}
JNIEXPORT jobject JNICALL
@@ -127,16 +142,16 @@
(JNIEnv *env, jclass clazz __attribute__ ((__unused__)), jint capacity)
{
void *buffer;
-
+
buffer = malloc (capacity);
if (buffer == NULL)
{
JCL_ThrowException (env, "java/lang/OutOfMemoryError",
- "unable to allocate memory for direct byte buffer");
- return NULL;
+ "unable to allocate memory for direct byte buffer");
+ return 0;
}
-
+
return NIOGetRawData (env, buffer);
}
More information about the kaffe
mailing list