mirror of https://github.com/apache/cassandra
Moving read only check condition at the end.
This commit is contained in:
parent
cec1534a7f
commit
57a0dbc899
|
|
@ -283,25 +283,26 @@ public class FastByteOperations
|
||||||
Object src;
|
Object src;
|
||||||
long srcOffset;
|
long srcOffset;
|
||||||
|
|
||||||
|
// Direct ByteBuffer
|
||||||
|
if (srcBuf.isDirect())
|
||||||
|
{
|
||||||
|
src = null;
|
||||||
|
srcOffset = theUnsafe.getLong(srcBuf, DIRECT_BUFFER_ADDRESS_OFFSET);
|
||||||
|
}
|
||||||
// Heap ByteBuffer (Mutable)
|
// Heap ByteBuffer (Mutable)
|
||||||
if (srcBuf.hasArray())
|
else if (srcBuf.hasArray())
|
||||||
{
|
{
|
||||||
src = srcBuf.array();
|
src = srcBuf.array();
|
||||||
srcOffset = BYTE_ARRAY_BASE_OFFSET + srcBuf.arrayOffset();
|
srcOffset = BYTE_ARRAY_BASE_OFFSET + srcBuf.arrayOffset();
|
||||||
}
|
}
|
||||||
// Read-Only Heap ByteBuffer (Still has hb but read-only)
|
// Read-Only Heap ByteBuffer (Still has hb but read-only)
|
||||||
else if (srcBuf.isReadOnly() && !srcBuf.isDirect())
|
else
|
||||||
{
|
{
|
||||||
src = theUnsafe.getObject(srcBuf, HEAP_HB_FIELD_OFFSET);
|
src = theUnsafe.getObject(srcBuf, HEAP_HB_FIELD_OFFSET);
|
||||||
int arrayOffset = theUnsafe.getInt(srcBuf, HEAP_ARRAY_FIELD_OFFSET);
|
int arrayOffset = theUnsafe.getInt(srcBuf, HEAP_ARRAY_FIELD_OFFSET);
|
||||||
srcOffset = BYTE_ARRAY_BASE_OFFSET + arrayOffset ;
|
srcOffset = BYTE_ARRAY_BASE_OFFSET + arrayOffset ;
|
||||||
}
|
}
|
||||||
// Direct ByteBuffer
|
// Direct ByteBuffer
|
||||||
else
|
|
||||||
{
|
|
||||||
src = null;
|
|
||||||
srcOffset = theUnsafe.getLong(srcBuf, DIRECT_BUFFER_ADDRESS_OFFSET);
|
|
||||||
}
|
|
||||||
|
|
||||||
copy(src, srcOffset + srcPosition, trgBuf, trgPosition, length);
|
copy(src, srcOffset + srcPosition, trgBuf, trgPosition, length);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue