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:
parent
f9da97f03c
commit
86a80fc352
4 changed files with 23 additions and 6 deletions
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue