2004-04-21 Michael Koch <konqueror@gmx.de>

* java/nio/DirectByteBufferImpl.java
	(shiftDown): Made static, give address as argument and
	provide a convenience method that overwrites shiftDown in
	ByteBufferImpl and calls the native shiftDown.
	* java/nio/MappedByteBufferImpl.java
	(): Use optimized method in DirectByteBufferImpl.
	* java/nio/natDirectByteBufferImpl.cc
	(shiftDown): Changed method signature. Removed usage of array_offset.

From-SVN: r80967
This commit is contained in:
Michael Koch 2004-04-21 15:33:53 +00:00 committed by Michael Koch
parent f9da97f03c
commit 86a80fc352
4 changed files with 23 additions and 6 deletions

View file

@ -1,3 +1,14 @@
2004-04-21 Michael Koch <konqueror@gmx.de>
* java/nio/DirectByteBufferImpl.java
(shiftDown): Made static, give address as argument and
provide a convenience method that overwrites shiftDown in
ByteBufferImpl and calls the native shiftDown.
* java/nio/MappedByteBufferImpl.java
(): Use optimized method in DirectByteBufferImpl.
* java/nio/natDirectByteBufferImpl.cc
(shiftDown): Changed method signature. Removed usage of array_offset.
2004-04-21 Michael Koch <konqueror@gmx.de>
* gnu/java/net/natPlainSocketImplPosix.cc

View file

@ -136,15 +136,20 @@ final class DirectByteBufferImpl extends ByteBuffer
return this;
}
native void shiftDown (int dst_offset, int src_offset, int count);
static native void shiftDown(RawData address, int dst_offset, int src_offset, int count);
void shiftDown(int dst_offset, int src_offset, int count)
{
shiftDown(address, dst_offset, src_offset, count);
}
public ByteBuffer compact ()
{
int pos = position();
if (pos > 0)
{
int count = remaining();
shiftDown(0, pos, count);
shiftDown(address, 0, pos, count);
position(count);
limit(capacity());
}

View file

@ -121,7 +121,8 @@ final class MappedByteBufferImpl extends MappedByteBuffer
if (pos > 0)
{
int count = remaining();
shiftDown(0, pos, count);
// Call shiftDown method optimized for direct buffers.
DirectByteBufferImpl.shiftDown(address, 0, pos, count);
position(count);
limit(capacity());
}

View file

@ -65,9 +65,9 @@ java::nio::DirectByteBufferImpl::adjustAddress (RawData* address, jint offset)
void
java::nio::DirectByteBufferImpl::shiftDown
(jint dst_offset, jint src_offset, jint count)
(RawData* address, jint dst_offset, jint src_offset, jint count)
{
jbyte* dst = reinterpret_cast<jbyte*> (address) + array_offset + dst_offset;
jbyte* src = reinterpret_cast<jbyte*> (address) + array_offset + src_offset;
jbyte* dst = reinterpret_cast<jbyte*> (address) + dst_offset;
jbyte* src = reinterpret_cast<jbyte*> (address) + src_offset;
::memmove(dst, src, count);
}