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>
|
2004-04-21 Michael Koch <konqueror@gmx.de>
|
||||||
|
|
||||||
* gnu/java/net/natPlainSocketImplPosix.cc
|
* gnu/java/net/natPlainSocketImplPosix.cc
|
||||||
|
|
|
@ -136,15 +136,20 @@ final class DirectByteBufferImpl extends ByteBuffer
|
||||||
return this;
|
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 ()
|
public ByteBuffer compact ()
|
||||||
{
|
{
|
||||||
int pos = position();
|
int pos = position();
|
||||||
if (pos > 0)
|
if (pos > 0)
|
||||||
{
|
{
|
||||||
int count = remaining();
|
int count = remaining();
|
||||||
shiftDown(0, pos, count);
|
shiftDown(address, 0, pos, count);
|
||||||
position(count);
|
position(count);
|
||||||
limit(capacity());
|
limit(capacity());
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,7 +121,8 @@ final class MappedByteBufferImpl extends MappedByteBuffer
|
||||||
if (pos > 0)
|
if (pos > 0)
|
||||||
{
|
{
|
||||||
int count = remaining();
|
int count = remaining();
|
||||||
shiftDown(0, pos, count);
|
// Call shiftDown method optimized for direct buffers.
|
||||||
|
DirectByteBufferImpl.shiftDown(address, 0, pos, count);
|
||||||
position(count);
|
position(count);
|
||||||
limit(capacity());
|
limit(capacity());
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,9 +65,9 @@ java::nio::DirectByteBufferImpl::adjustAddress (RawData* address, jint offset)
|
||||||
|
|
||||||
void
|
void
|
||||||
java::nio::DirectByteBufferImpl::shiftDown
|
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* dst = reinterpret_cast<jbyte*> (address) + dst_offset;
|
||||||
jbyte* src = reinterpret_cast<jbyte*> (address) + array_offset + src_offset;
|
jbyte* src = reinterpret_cast<jbyte*> (address) + src_offset;
|
||||||
::memmove(dst, src, count);
|
::memmove(dst, src, count);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue