[Mulgara-svn] r629 - trunk/src/jar/store-stringpool-xa/java/org/mulgara/store/stringpool/xa
pag at mulgara.org
pag at mulgara.org
Thu Jan 24 22:50:07 UTC 2008
Author: pag
Date: 2008-01-24 14:50:07 -0800 (Thu, 24 Jan 2008)
New Revision: 629
Modified:
trunk/src/jar/store-stringpool-xa/java/org/mulgara/store/stringpool/xa/XAStringPoolImpl.java
Log:
Updated loadSPObject to avoid an unneccessary copy operation on data from a Block. More of these may be possible
Modified: trunk/src/jar/store-stringpool-xa/java/org/mulgara/store/stringpool/xa/XAStringPoolImpl.java
===================================================================
--- trunk/src/jar/store-stringpool-xa/java/org/mulgara/store/stringpool/xa/XAStringPoolImpl.java 2008-01-24 22:47:57 UTC (rev 628)
+++ trunk/src/jar/store-stringpool-xa/java/org/mulgara/store/stringpool/xa/XAStringPoolImpl.java 2008-01-24 22:50:07 UTC (rev 629)
@@ -2238,15 +2238,14 @@
}
// Retrieve bytes from the AVLNode.
- ByteBuffer data = ByteBuffer.allocate(dataSize);
- data.limit(directDataSize);
- avlNode.getBlock().get(
- (AVLNode.HEADER_SIZE + IDX_DATA) * Constants.SIZEOF_LONG, data
- );
+ ByteBuffer data = avlNode.getBlock().getSlice((AVLNode.HEADER_SIZE + IDX_DATA) * Constants.SIZEOF_LONG, directDataSize);
// Retrieve the remaining bytes if any.
if (dataSize > MAX_DIRECT_DATA_BYTES) {
- data.limit(dataSize);
+ // need a bigger buffer
+ ByteBuffer newData = ByteBuffer.allocate(dataSize);
+ newData.put(data);
+ data = newData;
retrieveRemainingBytes(objectPool, data, blockId);
}
data.rewind();
More information about the Mulgara-svn
mailing list