Commit 6f3aed57 by Michael Koch Committed by Michael Koch

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
parent 67f63f32
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.
......
...@@ -42,10 +42,15 @@ import gnu.gcj.RawData; ...@@ -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)
......
...@@ -13,33 +13,33 @@ details. */ ...@@ -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;
} }
...@@ -35,11 +35,13 @@ details. */ ...@@ -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 ...@@ -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();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment