2003-06-17 Michael Koch <konqueror@gmx.de>

* java/nio/DirectByteBufferImpl.java
	(address): Made package private.
	(DirectByteBufferImpl): New constructor.
	* java/nio/natDirectByteBufferImpl.cc
	(allocateImpl): Moved to java.nio namespace, implemented.
	(freeImpl): Likewise.
	(getImpl): Likewise.
	(putImpl): Likewise.
	* jni.cc
	(_Jv_JNI_NewDirectByteBuffer): Implemented.
	(_Jv_JNI_GetDirectBufferAddress): Implemented.
	(_Jv_JNI_GetDirectBufferCapacity): Implemented.

From-SVN: r68105
This commit is contained in:
Michael Koch 2003-06-17 19:09:56 +00:00 committed by Michael Koch
parent 67f63f32d5
commit 6f3aed57fb
4 changed files with 49 additions and 23 deletions

View File

@ -1,3 +1,18 @@
2003-06-17 Michael Koch <konqueror@gmx.de>
* java/nio/DirectByteBufferImpl.java
(address): Made package private.
(DirectByteBufferImpl): New constructor.
* java/nio/natDirectByteBufferImpl.cc
(allocateImpl): Moved to java.nio namespace, implemented.
(freeImpl): Likewise.
(getImpl): Likewise.
(putImpl): Likewise.
* jni.cc
(_Jv_JNI_NewDirectByteBuffer): Implemented.
(_Jv_JNI_GetDirectBufferAddress): Implemented.
(_Jv_JNI_GetDirectBufferCapacity): Implemented.
2003-06-17 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> 2003-06-17 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* include/powerpc-signal.h: New File. * include/powerpc-signal.h: New File.

View File

@ -42,10 +42,15 @@ import gnu.gcj.RawData;
public class DirectByteBufferImpl extends ByteBuffer public class DirectByteBufferImpl extends ByteBuffer
{ {
private RawData address; RawData address;
private int offset; private int offset;
private boolean readOnly; private boolean readOnly;
public DirectByteBufferImpl (RawData address, long len)
{
this (address, 0, (int) len, (int) len, 0, -1, false);
}
public DirectByteBufferImpl (RawData address, int offset, int capacity, public DirectByteBufferImpl (RawData address, int offset, int capacity,
int limit, int position, int mark, int limit, int position, int mark,
boolean readOnly) boolean readOnly)

View File

@ -13,33 +13,33 @@ details. */
#include <gcj/cni.h> #include <gcj/cni.h>
#include <jvm.h> #include <jvm.h>
#include <stdlib.h>
#include <gnu/gcj/RawData.h> #include <gnu/gcj/RawData.h>
#include <java/nio/DirectByteBufferImpl.h> #include <java/nio/DirectByteBufferImpl.h>
gnu::gcj::RawData* gnu::gcj::RawData*
java::nio::DirectByteBufferImpl::allocateImpl (jint /*capacity*/) java::nio::DirectByteBufferImpl::allocateImpl (jint capacity)
{ {
// FIXME: implement this return reinterpret_cast<gnu::gcj::RawData*> (::malloc (capacity));
return 0;
} }
void void
java::nio::DirectByteBufferImpl::freeImpl (gnu::gcj::RawData* /*address*/) java::nio::DirectByteBufferImpl::freeImpl (gnu::gcj::RawData* address)
{ {
// FIXME: implement this ::free (reinterpret_cast<void*> (address));
} }
jbyte jbyte
java::nio::DirectByteBufferImpl::getImpl (jint /*index*/) java::nio::DirectByteBufferImpl::getImpl (jint index)
{ {
// FIXME: implement this jbyte* pointer = reinterpret_cast<jbyte*> (address) + offset + index;
// Dont forget: add offset to index return *pointer;
return 0;
} }
void void
java::nio::DirectByteBufferImpl::putImpl (jint /*index*/, jbyte /*value*/) java::nio::DirectByteBufferImpl::putImpl (jint index, jbyte value)
{ {
// FIXME: implement this jbyte* pointer = reinterpret_cast<jbyte*> (address) + offset + index;
// Dont forget: add offset to index *pointer = value;
} }

View File

@ -35,11 +35,13 @@ details. */
#include <java/lang/reflect/Method.h> #include <java/lang/reflect/Method.h>
#include <java/lang/reflect/Modifier.h> #include <java/lang/reflect/Modifier.h>
#include <java/lang/OutOfMemoryError.h> #include <java/lang/OutOfMemoryError.h>
#include <java/util/IdentityHashMap.h>
#include <java/lang/Integer.h> #include <java/lang/Integer.h>
#include <java/lang/ThreadGroup.h> #include <java/lang/ThreadGroup.h>
#include <java/lang/Thread.h> #include <java/lang/Thread.h>
#include <java/lang/IllegalAccessError.h> #include <java/lang/IllegalAccessError.h>
#include <java/nio/DirectByteBufferImpl.h>
#include <java/util/IdentityHashMap.h>
#include <gnu/gcj/RawData.h>
#include <gcj/method.h> #include <gcj/method.h>
#include <gcj/field.h> #include <gcj/field.h>
@ -1720,24 +1722,28 @@ void
// Direct byte buffers. // Direct byte buffers.
static jobject static jobject
(JNICALL _Jv_JNI_NewDirectByteBuffer) (JNIEnv *, void *, jlong) (JNICALL _Jv_JNI_NewDirectByteBuffer) (JNIEnv *, void *address, jlong length)
{ {
// For now we don't support this. using namespace gnu::gcj;
return NULL; using namespace java::nio;
return new DirectByteBufferImpl (reinterpret_cast<RawData *> (address),
length);
} }
static void * static void *
(JNICALL _Jv_JNI_GetDirectBufferAddress) (JNIEnv *, jobject) (JNICALL _Jv_JNI_GetDirectBufferAddress) (JNIEnv *, jobject buffer)
{ {
// For now we don't support this. using namespace java::nio;
return NULL; DirectByteBufferImpl* bb = static_cast<DirectByteBufferImpl *> (buffer);
return reinterpret_cast<void *> (bb->address);
} }
static jlong static jlong
(JNICALL _Jv_JNI_GetDirectBufferCapacity) (JNIEnv *, jobject) (JNICALL _Jv_JNI_GetDirectBufferCapacity) (JNIEnv *, jobject buffer)
{ {
// For now we don't support this. using namespace java::nio;
return -1; DirectByteBufferImpl* bb = static_cast<DirectByteBufferImpl *> (buffer);
return bb->capacity();
} }