This is an automated email from the ASF dual-hosted git repository. leerho pushed a commit to branch master_tempfix in repository https://gitbox.apache.org/repos/asf/datasketches-memory.git
commit d54aceb3823948908d7cc88fe555693181b2e2ac Author: Lee Rhodes <[email protected]> AuthorDate: Fri Jan 13 13:56:56 2023 -0800 Interim - passes all tests, almost done. --- .../org/apache/datasketches/memory/BaseState.java | 55 ++++------------------ .../org/apache/datasketches/memory/Buffer.java | 2 +- .../memory/DefaultMemoryRequestServer.java | 2 +- .../apache/datasketches/memory/MurmurHash3v2.java | 4 +- .../apache/datasketches/memory/WritableMemory.java | 4 +- .../memory/internal/AccessByteBuffer.java | 10 ++-- .../internal/BBNonNativeWritableBufferImpl.java | 23 ++++----- .../internal/BBNonNativeWritableMemoryImpl.java | 23 ++++----- .../memory/internal/BBWritableBufferImpl.java | 31 ++++++------ .../memory/internal/BBWritableMemoryImpl.java | 28 +++++------ .../memory/internal/BaseStateImpl.java | 32 ++++++++++--- .../memory/internal/BaseWritableBufferImpl.java | 10 ++-- .../DirectNonNativeWritableBufferImpl.java | 17 ++----- .../DirectNonNativeWritableMemoryImpl.java | 17 ++----- .../memory/internal/DirectWritableBufferImpl.java | 17 ++----- .../memory/internal/DirectWritableMemoryImpl.java | 17 ++----- .../internal/HeapNonNativeWritableBufferImpl.java | 17 ++----- .../internal/HeapNonNativeWritableMemoryImpl.java | 17 ++----- .../memory/internal/HeapWritableBufferImpl.java | 17 ++----- .../memory/internal/HeapWritableMemoryImpl.java | 17 ++----- .../internal/MapNonNativeWritableBufferImpl.java | 17 ++----- .../internal/MapNonNativeWritableMemoryImpl.java | 17 ++----- .../memory/internal/MapWritableBufferImpl.java | 17 ++----- .../memory/internal/MapWritableMemoryImpl.java | 16 ++----- .../memory/internal/AaByteBufferTest.java | 53 --------------------- .../internal/AllocateDirectMapMemoryTest.java | 20 ++++---- .../datasketches/memory/internal/Buffer2Test.java | 6 +-- .../datasketches/memory/internal/BufferTest.java | 19 ++++---- .../internal/ExampleMemoryRequestServerTest.java | 2 +- .../datasketches/memory/internal/LeafImplTest.java | 16 +++---- .../datasketches/memory/internal/MemoryTest.java | 4 +- .../internal/NativeWritableBufferImplTest.java | 13 +++-- .../internal/NativeWritableMemoryImplTest.java | 5 +- .../internal/NonNativeWritableBufferImplTest.java | 8 ++-- .../internal/NonNativeWritableMemoryImplTest.java | 4 +- .../memory/internal/WritableMemoryTest.java | 14 +++--- 36 files changed, 204 insertions(+), 387 deletions(-) diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/BaseState.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/BaseState.java index 2da19c4..aff64aa 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/BaseState.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/BaseState.java @@ -115,55 +115,20 @@ public interface BaseState { long getCapacity(); /** - * Gets the cumulative offset in bytes of this object from the backing resource. - * This offset may also include other offset components such as the native off-heap - * memory address, DirectByteBuffer split offsets, region offsets, and unsafe arrayBaseOffsets. - * - * @return the cumulative offset in bytes of this object from the backing resource. + * Returns the offset of address zero of this object relative to the base address of the + * backing resource. This does not include the object header for heap arrays nor the initial + * offset of a memory-mapped file. + * @return the offset of address zero of this object relative to the base address of the + * backing resource. */ - long getCumulativeOffset(); - - /** - * Gets the cumulative offset in bytes of this object from the backing resource including the given - * localOffsetBytes. This offset may also include other offset components such as the native off-heap - * memory address, DirectByteBuffer split offsets, region offsets, and object arrayBaseOffsets. - * - * @param localOffsetBytes offset to be added to the cumulative offset. - * @return the cumulative offset in bytes of this object from the backing resource including the - * given offsetBytes. - */ - default long getCumulativeOffset(long localOffsetBytes) { - return getCumulativeOffset() + localOffsetBytes; - } - - /** - * Returns the offset of address zero of this object relative to the address zero of the - * backing resource but not including the size of any Java object header. - * This is only used when moving directly across to Memory, Buffer or Buffer duplicate. - * @return the offset of address zero of this object relative to the address zero of the - * backing resource but not including the size of any Java object header. - */ - long getRegionOffset(); - - /** - * Returns the offset of address zero of this object relative to the address zero of the - * backing resource plus the given offsetBytes but not including the size of any Java object - * header. - * @param offsetBytes the given offsetBytes - * @return the offset of address zero of this object relative to the address zero of the - * backing resource plus the given offsetBytes but not including the size of any Java object - * header. - */ - default long getRegionOffset(long offsetBytes) { - return getRegionOffset() + offsetBytes; - } + long getTotalOffset(); /** - * Gets the current Type ByteOrder. - * This may be different from the ByteOrder of the backing resource and of the Native Byte Order. - * @return the current Type ByteOrder. + * Gets the current ByteOrder. + * This may be different from the ByteOrder of the backing resource and {@link ByteOrder#nativeOrder()} + * @return the current ByteOrder. */ - ByteOrder getTypeByteOrder(); + ByteOrder getByteOrder(); /** * Returns true if this object is backed by an on-heap primitive array diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Buffer.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Buffer.java index fe4a9c8..9c75edb 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Buffer.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Buffer.java @@ -143,7 +143,7 @@ public interface Buffer extends BaseBuffer { * @return Memory */ default Memory asMemory() { - return asMemory(getTypeByteOrder()); + return asMemory(getByteOrder()); } /** diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java index 51c2d2b..f8f828c 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/DefaultMemoryRequestServer.java @@ -73,7 +73,7 @@ public final class DefaultMemoryRequestServer implements MemoryRequestServer { */ @Override public WritableMemory request(final WritableMemory currentWritableMemory, final long capacityBytes) { - final WritableMemory wmem = WritableMemory.allocate((int)capacityBytes, currentWritableMemory.getTypeByteOrder()); + final WritableMemory wmem = WritableMemory.allocate((int)capacityBytes, currentWritableMemory.getByteOrder()); return wmem; } diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/MurmurHash3v2.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/MurmurHash3v2.java index 67c4830..673490a 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/MurmurHash3v2.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/MurmurHash3v2.java @@ -22,6 +22,8 @@ package org.apache.datasketches.memory; import static java.nio.charset.StandardCharsets.UTF_8; import static org.apache.datasketches.memory.internal.UnsafeUtil.unsafe; +import org.apache.datasketches.memory.internal.BaseStateImpl; + /** * <p>The MurmurHash3 is a fast, non-cryptographic, 128-bit hash function that has * excellent avalanche and 2-way bit independence properties.</p> @@ -177,7 +179,7 @@ public final class MurmurHash3v2 { if (uObj == null) { throw new IllegalArgumentException("The backing resource of input mem is not on-heap."); } - long cumOff = mem.getCumulativeOffset(offsetBytes); + long cumOff = ((BaseStateImpl)mem).getCumulativeOffset(offsetBytes); long h1 = seed; long h2 = seed; diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableMemory.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableMemory.java index feacb1b..d8fbd12 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableMemory.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableMemory.java @@ -167,7 +167,7 @@ public interface WritableMemory extends Memory { * @return a new <i>WritableMemory</i> representing the defined writable region. */ default WritableMemory writableRegion(long regionOffsetBytes, long capacityBytes) { - return writableRegion(regionOffsetBytes, capacityBytes, getTypeByteOrder()); + return writableRegion(regionOffsetBytes, capacityBytes, getByteOrder()); } /** @@ -201,7 +201,7 @@ public interface WritableMemory extends Memory { * @return a new <i>WritableBuffer</i> with a view of this WritableMemory */ default WritableBuffer asWritableBuffer() { - return asWritableBuffer(getTypeByteOrder()); + return asWritableBuffer(getByteOrder()); } /** diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/AccessByteBuffer.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/AccessByteBuffer.java index 71f30a7..9319e82 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/AccessByteBuffer.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/AccessByteBuffer.java @@ -47,6 +47,7 @@ final class AccessByteBuffer { UnsafeUtil.getFieldOffset(java.nio.ByteBuffer.class, "offset"); final long nativeBaseOffset; + final long initialCumOffset; final long capacityBytes; final long offsetBytes; final Object unsafeObj; @@ -65,14 +66,17 @@ final class AccessByteBuffer { if (direct) { nativeBaseOffset = ((sun.nio.ch.DirectBuffer) byteBuf).address(); unsafeObj = null; - offsetBytes = 0L; //address() is already adjusted for direct slices, so regionOffset = 0 + offsetBytes = 0L; //address() is already adjusted for direct slices, so offset = 0 + initialCumOffset = nativeBaseOffset; } else { nativeBaseOffset = 0L; // ByteBuffer.arrayOffset() and ByteBuffer.array() throw ReadOnlyBufferException if - // ByteBuffer is read-only. This uses reflection for both writable and read-only cases. - // Includes the slice() offset for heap. + // ByteBuffer is read-only, so this uses reflection for both writable and read-only cases. + // OffsetBytes includes the slice() offset for heap. The original array is still there because + // this is a view. offsetBytes = unsafe.getInt(byteBuf, BYTE_BUFFER_OFFSET_FIELD_OFFSET); unsafeObj = unsafe.getObject(byteBuf, BYTE_BUFFER_HB_FIELD_OFFSET); + initialCumOffset = UnsafeUtil.getArrayBaseOffset(unsafeObj.getClass()) + offsetBytes; } } diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableBufferImpl.java index cc4e834..a024f11 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableBufferImpl.java @@ -39,7 +39,6 @@ final class BBNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; BBNonNativeWritableBufferImpl( @@ -58,7 +57,6 @@ final class BBNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | BYTEBUF | BUFFER | NONNATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; this.byteBuf = byteBuf; } @@ -69,19 +67,18 @@ final class BBNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | BUFFER | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new BBWritableBufferImpl( - unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, byteBuf); + unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, byteBuf); } else { typeIdOut |= NONNATIVE; return new BBNonNativeWritableBufferImpl( - unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, byteBuf); + unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, byteBuf); } } @@ -138,17 +135,11 @@ final class BBNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); @@ -161,4 +152,10 @@ final class BBNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { return unsafeObj; } + @Override + public ByteBuffer getByteBuffer() { + assertValid(); + return byteBuf; + } + } diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableMemoryImpl.java index 6ea83f9..80604b4 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableMemoryImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableMemoryImpl.java @@ -39,7 +39,6 @@ final class BBNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; BBNonNativeWritableMemoryImpl( @@ -58,7 +57,6 @@ final class BBNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | BYTEBUF | MEMORY | NONNATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; this.byteBuf = byteBuf; } @@ -69,19 +67,18 @@ final class BBNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MEMORY | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new BBWritableMemoryImpl( - unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, byteBuf); + unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, byteBuf); } else { typeIdOut |= NONNATIVE; return new BBNonNativeWritableMemoryImpl( - unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, byteBuf); + unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, byteBuf); } } @@ -123,17 +120,11 @@ final class BBNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); @@ -146,4 +137,10 @@ final class BBNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { return unsafeObj; } + @Override + public ByteBuffer getByteBuffer() { + assertValid(); + return byteBuf; + } + } diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableBufferImpl.java index a05eedc..fcd47f3 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableBufferImpl.java @@ -32,14 +32,13 @@ import org.apache.datasketches.memory.WritableBuffer; * @author Lee Rhodes */ final class BBWritableBufferImpl extends NativeWritableBufferImpl { - private final ByteBuffer byteBuf; //holds a reference to a ByteBuffer until we are done with it. + private final ByteBuffer byteBuf; //holds a reference to a ByteBuffer until we are done with it. private final Object unsafeObj; - private final long nativeBaseOffset; - private final long offsetBytes; + private final long nativeBaseOffset; //raw off-heap address of root allocation (whether direct or ByteBuffer) + private final long offsetBytes; //from the root resource including original ByteBuffer position or split offset private final long capacityBytes; private final int typeId; - private long cumOffsetBytes; - private long regionOffsetBytes; + private long cumOffsetBytes; //includes array header if heap and nativeBaseOffset if off-heap private final MemoryRequestServer memReqSvr; BBWritableBufferImpl( @@ -58,7 +57,6 @@ final class BBWritableBufferImpl extends NativeWritableBufferImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | BYTEBUF | BUFFER | NATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; this.byteBuf = byteBuf; } @@ -69,19 +67,18 @@ final class BBWritableBufferImpl extends NativeWritableBufferImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | BUFFER | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new BBWritableBufferImpl( - unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, byteBuf); + unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, byteBuf); } else { typeIdOut |= NONNATIVE; return new BBNonNativeWritableBufferImpl( - unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, byteBuf); + unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, byteBuf); } } @@ -138,17 +135,11 @@ final class BBWritableBufferImpl extends NativeWritableBufferImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); @@ -161,4 +152,10 @@ final class BBWritableBufferImpl extends NativeWritableBufferImpl { return unsafeObj; } + @Override + public ByteBuffer getByteBuffer() { + assertValid(); + return byteBuf; + } + } diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableMemoryImpl.java index 9c0cf14..c80bcef 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableMemoryImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableMemoryImpl.java @@ -34,12 +34,11 @@ import org.apache.datasketches.memory.WritableMemory; final class BBWritableMemoryImpl extends NativeWritableMemoryImpl { private final ByteBuffer byteBuf; //holds a reference to a ByteBuffer until we are done with it. private final Object unsafeObj; - private final long nativeBaseOffset; - private final long offsetBytes; + private final long nativeBaseOffset; //raw off-heap address of root allocation (whether direct or ByteBuffer) + private final long offsetBytes; //from the root resource including original ByteBuffer position or region offset private final long capacityBytes; private final int typeId; - private long cumOffsetBytes; - private long regionOffsetBytes; + private long cumOffsetBytes; //includes array header if heap and nativeBaseOffset if off-heap private final MemoryRequestServer memReqSvr; BBWritableMemoryImpl( @@ -58,7 +57,6 @@ final class BBWritableMemoryImpl extends NativeWritableMemoryImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | BYTEBUF | MEMORY | NATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; this.byteBuf = byteBuf; } @@ -69,19 +67,18 @@ final class BBWritableMemoryImpl extends NativeWritableMemoryImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MEMORY | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new BBWritableMemoryImpl( - unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, byteBuf); + unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, byteBuf); } else { typeIdOut |= NONNATIVE; return new BBNonNativeWritableMemoryImpl( - unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, byteBuf); + unsafeObj, nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, byteBuf); } } @@ -123,17 +120,11 @@ final class BBWritableMemoryImpl extends NativeWritableMemoryImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); @@ -146,4 +137,9 @@ final class BBWritableMemoryImpl extends NativeWritableMemoryImpl { return unsafeObj; } + @Override + public ByteBuffer getByteBuffer() { + assertValid(); + return byteBuf; + } } diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java index a63343f..fa75de8 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java @@ -141,6 +141,28 @@ public abstract class BaseStateImpl implements BaseState { return null; } + /** + * Gets the cumulative offset in bytes of this object from the backing resource. + * This offset may also include other offset components such as the native off-heap + * memory address, DirectByteBuffer split offsets, region offsets, and unsafe arrayBaseOffsets. + * + * @return the cumulative offset in bytes of this object from the backing resource. + */ + abstract long getCumulativeOffset(); + + /** + * Gets the cumulative offset in bytes of this object from the backing resource including the given + * localOffsetBytes. This offset may also include other offset components such as the native off-heap + * memory address, DirectByteBuffer split offsets, region offsets, and object arrayBaseOffsets. + * + * @param localOffsetBytes offset to be added to the cumulative offset. + * @return the cumulative offset in bytes of this object from the backing resource including the + * given offsetBytes. + */ + public long getCumulativeOffset(long localOffsetBytes) { + return getCumulativeOffset() + localOffsetBytes; + } + //MONITORING /** @@ -183,10 +205,8 @@ public abstract class BaseStateImpl implements BaseState { //Overridden by ByteBuffer, Direct and Map leafs abstract long getNativeBaseOffset(); - abstract long getOffset(); - @Override - public final ByteOrder getTypeByteOrder() { + public final ByteOrder getByteOrder() { return isNonNativeType(getTypeId()) ? Util.NON_NATIVE_BYTE_ORDER : ByteOrder.nativeOrder(); } @@ -222,7 +242,7 @@ public abstract class BaseStateImpl implements BaseState { @Override public final boolean isByteOrderCompatible(final ByteOrder byteOrder) { - final ByteOrder typeBO = getTypeByteOrder(); + final ByteOrder typeBO = getByteOrder(); return typeBO == ByteOrder.nativeOrder() && typeBO == byteOrder; } @@ -350,13 +370,13 @@ public abstract class BaseStateImpl implements BaseState { sb.append("UnsafeObj, hashCode : ").append(uObjStr).append(LS); sb.append("UnsafeObjHeader : ").append(uObjHeader).append(LS); sb.append("ByteBuf, hashCode : ").append(bbStr).append(LS); - sb.append("RegionOffset : ").append(state.getRegionOffset()).append(LS); + sb.append("RegionOffset : ").append(state.getTotalOffset()).append(LS); sb.append("Capacity : ").append(capacity).append(LS); sb.append("CumBaseOffset : ").append(cumBaseOffset).append(LS); sb.append("MemReq, hashCode : ").append(memReqStr).append(LS); sb.append("Valid : ").append(state.isValid()).append(LS); sb.append("Read Only : ").append(state.isReadOnly()).append(LS); - sb.append("Type Byte Order : ").append(state.getTypeByteOrder().toString()).append(LS); + sb.append("Type Byte Order : ").append(state.getByteOrder().toString()).append(LS); sb.append("Native Byte Order : ").append(ByteOrder.nativeOrder().toString()).append(LS); sb.append("JDK Runtime Version : ").append(UnsafeUtil.JDK).append(LS); //Data detail diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java index abbb9ac..d5f95f8 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java @@ -77,7 +77,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W final MemoryRequestServer memReqSvr) { final AccessByteBuffer abb = new AccessByteBuffer(byteBuf); final int typeId = (abb.resourceReadOnly || localReadOnly) ? READONLY : 0; - final long cumOffsetBytes = 0; + final long cumOffsetBytes = abb.initialCumOffset; final BaseWritableBufferImpl bwbi = Util.isNativeByteOrder(byteOrder) ? new BBWritableBufferImpl(abb.unsafeObj, abb.nativeBaseOffset, abb.offsetBytes, abb.capacityBytes, typeId, cumOffsetBytes, memReqSvr, byteBuf) @@ -90,7 +90,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W //REGIONS @Override public Buffer region() { - return writableRegionImpl(getPosition(), getEnd() - getPosition(), true, getTypeByteOrder()); + return writableRegionImpl(getPosition(), getEnd() - getPosition(), true, getByteOrder()); } @Override @@ -102,7 +102,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W @Override public WritableBuffer writableRegion() { - return writableRegionImpl(getPosition(), getEnd() - getPosition(), false, getTypeByteOrder()); + return writableRegionImpl(getPosition(), getEnd() - getPosition(), false, getByteOrder()); } @Override @@ -130,7 +130,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W //DUPLICATES @Override public Buffer duplicate() { - return writableDuplicateImpl(true, getTypeByteOrder()); + return writableDuplicateImpl(true, getByteOrder()); } @Override @@ -140,7 +140,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W @Override public WritableBuffer writableDuplicate() { - return writableDuplicateImpl(false, getTypeByteOrder()); + return writableDuplicateImpl(false, getByteOrder()); } @Override diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableBufferImpl.java index 7b07234..4394355 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableBufferImpl.java @@ -36,7 +36,6 @@ final class DirectNonNativeWritableBufferImpl extends NonNativeWritableBufferImp private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; private final StepBoolean valid; //a reference only @@ -54,7 +53,6 @@ final class DirectNonNativeWritableBufferImpl extends NonNativeWritableBufferImp this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | DIRECT | BUFFER | NONNATIVE; //initially cannot be ReadOnly this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; this.valid = valid; } @@ -65,18 +63,17 @@ final class DirectNonNativeWritableBufferImpl extends NonNativeWritableBufferImp final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | BUFFER | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new DirectWritableBufferImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, valid); } else { typeIdOut |= NONNATIVE; return new DirectNonNativeWritableBufferImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, valid); } } @@ -138,17 +135,11 @@ final class DirectNonNativeWritableBufferImpl extends NonNativeWritableBufferImp } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableMemoryImpl.java index f5bb988..9d26441 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableMemoryImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableMemoryImpl.java @@ -36,7 +36,6 @@ final class DirectNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImp private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; private final StepBoolean valid; //a reference only @@ -54,7 +53,6 @@ final class DirectNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImp this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | DIRECT | MEMORY | NONNATIVE; //initially cannot be ReadOnly this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; this.valid = valid; } @@ -65,19 +63,18 @@ final class DirectNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImp final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MEMORY | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new DirectWritableMemoryImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, valid); } else { typeIdOut |= NONNATIVE; return new DirectNonNativeWritableMemoryImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, valid); } } @@ -124,17 +121,11 @@ final class DirectNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImp } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableBufferImpl.java index c8147e5..f338c54 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableBufferImpl.java @@ -36,7 +36,6 @@ final class DirectWritableBufferImpl extends NativeWritableBufferImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; private final StepBoolean valid; //a reference only @@ -54,7 +53,6 @@ final class DirectWritableBufferImpl extends NativeWritableBufferImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | DIRECT | BUFFER | NATIVE; //initially cannot be ReadOnly this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; this.valid = valid; } @@ -65,19 +63,18 @@ final class DirectWritableBufferImpl extends NativeWritableBufferImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | BUFFER | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new DirectWritableBufferImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, valid); } else { typeIdOut |= NONNATIVE; return new DirectNonNativeWritableBufferImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, valid); } } @@ -139,17 +136,11 @@ final class DirectWritableBufferImpl extends NativeWritableBufferImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableMemoryImpl.java index 8ff0961..f4162a7 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableMemoryImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableMemoryImpl.java @@ -36,7 +36,6 @@ final class DirectWritableMemoryImpl extends NativeWritableMemoryImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; private final StepBoolean valid; //a reference only @@ -54,7 +53,6 @@ final class DirectWritableMemoryImpl extends NativeWritableMemoryImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | DIRECT | MEMORY | NATIVE; //initially cannot be ReadOnly this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; this.valid = valid; } @@ -65,19 +63,18 @@ final class DirectWritableMemoryImpl extends NativeWritableMemoryImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - //this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MEMORY | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new DirectWritableMemoryImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, valid); } else { typeIdOut |= NONNATIVE; return new DirectNonNativeWritableMemoryImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr, valid); } } @@ -124,17 +121,11 @@ final class DirectWritableMemoryImpl extends NativeWritableMemoryImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableBufferImpl.java index 91d98fa..3b1386c 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableBufferImpl.java @@ -36,7 +36,6 @@ final class HeapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; HeapNonNativeWritableBufferImpl( @@ -52,7 +51,6 @@ final class HeapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | HEAP | BUFFER | NONNATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; } @@ -62,19 +60,18 @@ final class HeapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - this.cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | BUFFER | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new HeapWritableBufferImpl( - unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr); + unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr); } else { typeIdOut |= NONNATIVE; return new HeapNonNativeWritableBufferImpl( - unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr); + unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr); } } @@ -131,17 +128,11 @@ final class HeapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableMemoryImpl.java index 5ebe8db..e528cef 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableMemoryImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableMemoryImpl.java @@ -36,7 +36,6 @@ final class HeapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; HeapNonNativeWritableMemoryImpl( @@ -52,7 +51,6 @@ final class HeapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | HEAP | MEMORY | NONNATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; } @@ -62,19 +60,18 @@ final class HeapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - this.cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MEMORY | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new HeapWritableMemoryImpl( - unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr); + unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr); } else { typeIdOut |= NONNATIVE; return new HeapNonNativeWritableMemoryImpl( - unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr); + unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr); } } @@ -116,17 +113,11 @@ final class HeapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableBufferImpl.java index e54a3cf..33d8170 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableBufferImpl.java @@ -36,7 +36,6 @@ final class HeapWritableBufferImpl extends NativeWritableBufferImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; HeapWritableBufferImpl( @@ -52,7 +51,6 @@ final class HeapWritableBufferImpl extends NativeWritableBufferImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | HEAP | BUFFER | NATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; } @@ -62,19 +60,18 @@ final class HeapWritableBufferImpl extends NativeWritableBufferImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - this.cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | BUFFER | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new HeapWritableBufferImpl( - unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr); + unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr); } else { typeIdOut |= NONNATIVE; return new HeapNonNativeWritableBufferImpl( - unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr); + unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr); } } @@ -131,17 +128,11 @@ final class HeapWritableBufferImpl extends NativeWritableBufferImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableMemoryImpl.java index 2da356c..d70ac99 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableMemoryImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableMemoryImpl.java @@ -36,7 +36,6 @@ final class HeapWritableMemoryImpl extends NativeWritableMemoryImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final MemoryRequestServer memReqSvr; HeapWritableMemoryImpl( @@ -52,7 +51,6 @@ final class HeapWritableMemoryImpl extends NativeWritableMemoryImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | HEAP | MEMORY | NATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.memReqSvr = memReqSvr; } @@ -62,19 +60,18 @@ final class HeapWritableMemoryImpl extends NativeWritableMemoryImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MEMORY | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new HeapWritableMemoryImpl( - unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr); + unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr); } else { typeIdOut |= NONNATIVE; return new HeapNonNativeWritableMemoryImpl( - unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, memReqSvr); + unsafeObj, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, memReqSvr); } } @@ -116,17 +113,11 @@ final class HeapWritableMemoryImpl extends NativeWritableMemoryImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableBufferImpl.java index b5333a2..00eb965 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableBufferImpl.java @@ -36,7 +36,6 @@ final class MapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final StepBoolean valid; //a reference only MapNonNativeWritableBufferImpl( @@ -52,7 +51,6 @@ final class MapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | MAP | BUFFER | NONNATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.valid = valid; } @@ -62,19 +60,18 @@ final class MapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MAP | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new MapWritableBufferImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, valid); } else { typeIdOut |= NONNATIVE; return new MapNonNativeWritableBufferImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, valid); } } @@ -136,17 +133,11 @@ final class MapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableMemoryImpl.java index ce53e6f..9a4ace9 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableMemoryImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableMemoryImpl.java @@ -36,7 +36,6 @@ final class MapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final StepBoolean valid; //a reference only MapNonNativeWritableMemoryImpl( @@ -52,7 +51,6 @@ final class MapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | MAP | MEMORY | NONNATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.valid = valid; } @@ -62,19 +60,18 @@ final class MapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MAP | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new MapWritableMemoryImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, valid); } else { typeIdOut |= NONNATIVE; return new MapNonNativeWritableMemoryImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, valid); } } @@ -121,17 +118,11 @@ final class MapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableBufferImpl.java index dfc6017..51ba0db 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableBufferImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableBufferImpl.java @@ -36,7 +36,6 @@ final class MapWritableBufferImpl extends NativeWritableBufferImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final StepBoolean valid; //a reference only MapWritableBufferImpl( @@ -52,7 +51,6 @@ final class MapWritableBufferImpl extends NativeWritableBufferImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | MAP | BUFFER | NATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = 0; this.valid = valid; } @@ -62,19 +60,18 @@ final class MapWritableBufferImpl extends NativeWritableBufferImpl { final long capacityBytes, final boolean readOnly, final ByteOrder byteOrder) { - this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MAP | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new MapWritableBufferImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, valid); } else { typeIdOut |= NONNATIVE; return new MapNonNativeWritableBufferImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, valid); } } @@ -136,17 +133,11 @@ final class MapWritableBufferImpl extends NativeWritableBufferImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableMemoryImpl.java index 3216a4f..2417281 100644 --- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableMemoryImpl.java +++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableMemoryImpl.java @@ -36,7 +36,6 @@ final class MapWritableMemoryImpl extends NativeWritableMemoryImpl { private final long capacityBytes; private final int typeId; private long cumOffsetBytes; - private long regionOffsetBytes; private final StepBoolean valid; //a reference only MapWritableMemoryImpl( @@ -52,7 +51,6 @@ final class MapWritableMemoryImpl extends NativeWritableMemoryImpl { this.capacityBytes = capacityBytes; this.typeId = removeNnBuf(typeId) | MAP | MEMORY | NATIVE; this.cumOffsetBytes = cumOffsetBytes; - this.regionOffsetBytes = cumOffsetBytes - nativeBaseOffset; this.valid = valid; } @@ -64,17 +62,17 @@ final class MapWritableMemoryImpl extends NativeWritableMemoryImpl { final ByteOrder byteOrder) { //this.regionOffsetBytes = regionOffsetBytes; final long newOffsetBytes = offsetBytes + regionOffsetBytes; - cumOffsetBytes += regionOffsetBytes; + final long newCumOffsetBytes = cumOffsetBytes + regionOffsetBytes; int typeIdOut = removeNnBuf(typeId) | MAP | REGION | (readOnly ? READONLY : 0); if (Util.isNativeByteOrder(byteOrder)) { typeIdOut |= NATIVE; return new MapWritableMemoryImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, valid); } else { typeIdOut |= NONNATIVE; return new MapNonNativeWritableMemoryImpl( - nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, cumOffsetBytes, valid); + nativeBaseOffset, newOffsetBytes, capacityBytes, typeIdOut, newCumOffsetBytes, valid); } } @@ -121,17 +119,11 @@ final class MapWritableMemoryImpl extends NativeWritableMemoryImpl { } @Override - public long getOffset() { + public long getTotalOffset() { assertValid(); return offsetBytes; } - @Override - public long getRegionOffset() { - assertValid(); - return regionOffsetBytes; - } - @Override int getTypeId() { assertValid(); diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AaByteBufferTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AaByteBufferTest.java deleted file mode 100644 index 46ee5af..0000000 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AaByteBufferTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.datasketches.memory.internal; - -import java.nio.ByteBuffer; - -import org.apache.datasketches.memory.Memory; -import org.testng.annotations.Test; - -public class AaByteBufferTest { - - @Test - public void checkBB() { - byte[] byteArr = new byte[32]; - int len = byteArr.length; - for (byte i = 0; i < len; i++) { byteArr[i] = i; } - ByteBuffer bb = ByteBuffer.wrap(byteArr); - Memory mem = Memory.wrap(bb); - for (int i = 0; i < len; i++) { - //System.out.println(mem.getByte(i)); - } - } - - @Test - public void checkHeap() { - byte[] byteArr = new byte[32]; - int len = byteArr.length; - for (byte i = 0; i < len; i++) { byteArr[i] = i; } - Memory mem = Memory.wrap(byteArr); - for (int i = 0; i < len; i++) { - //System.out.println(mem.getByte(i)); - } - } - -} - diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java index 455ad3d..5845be2 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java @@ -62,22 +62,22 @@ public class AllocateDirectMapMemoryTest { try (MapHandle rh = Memory.map(file)) { Memory mem = rh.get(); - println("Mem Cap: " + mem.getCapacity()); - println("Native Off: " + ((BaseStateImpl)mem).getNativeBaseOffset()); - println("Offset: " + ((BaseStateImpl)mem).getOffset()); - println("Cum Offset: " + mem.getCumulativeOffset(0)); - println("Region Offset: " + mem.getRegionOffset()); + println("Mem Cap: " + mem.getCapacity()); + println("Native Off: " + ((BaseStateImpl)mem).getNativeBaseOffset()); + println("Total Offset: " + mem.getTotalOffset()); + println("Cum Offset: " + ((BaseStateImpl)mem).getCumulativeOffset(0)); + println("Region Offset: " + mem.getTotalOffset()); StringBuilder sb = new StringBuilder(); mem.getCharsFromUtf8(43, 176, sb); println(sb.toString()); println(""); Memory mem2 = mem.region(43+76, 20); - println("Mem Cap: " + mem2.getCapacity()); - println("Native Off: " + ((BaseStateImpl)mem).getNativeBaseOffset()); - println("Offset: " + ((BaseStateImpl)mem).getOffset()); - println("Cum Offset: " + mem2.getCumulativeOffset(0)); - println("Region Offset: " + mem2.getRegionOffset()); + println("Mem Cap: " + mem2.getCapacity()); + println("Native Off: " + ((BaseStateImpl)mem).getNativeBaseOffset()); + println("Offset: " + mem.getTotalOffset()); + println("Cum Offset: " + ((BaseStateImpl)mem2).getCumulativeOffset(0)); + println("Region Offset: " + mem2.getTotalOffset()); StringBuilder sb2 = new StringBuilder(); mem2.getCharsFromUtf8(0, 12, sb2); println(sb2.toString()); diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java index 8aef3db..304027d 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/Buffer2Test.java @@ -38,7 +38,7 @@ import org.testng.annotations.Test; public class Buffer2Test { @Test - public void testWrapByteBuf() { + public void testWrapHeapByteBuf() { ByteBuffer bb = ByteBuffer.allocate(64).order(ByteOrder.nativeOrder()); Byte b = 0; @@ -330,7 +330,7 @@ public class Buffer2Test { } bb.position(10); - Buffer buffer = Buffer.wrap(bb.slice().order(ByteOrder.nativeOrder())); //slice = 54 + Buffer buffer = Buffer.wrap(bb.slice().order(ByteOrder.nativeOrder())); //slice size = 54 buffer.setPosition(30);//remaining = 24 Buffer dupBuffer = buffer.duplicate(); //all 54 Buffer regionBuffer = buffer.region(); //24 @@ -353,7 +353,7 @@ public class Buffer2Test { for (int i = 0; i < n; i++) { arr[i] = i; } Memory mem = Memory.wrap(arr); Buffer buf = mem.asBuffer(); - Buffer reg = buf.region(n2 * 8, n2 * 8, buf.getTypeByteOrder()); //top half + Buffer reg = buf.region(n2 * 8, n2 * 8, buf.getByteOrder()); //top half for (int i = 0; i < n2; i++) { long v = reg.getLong(i * 8); long e = i + n2; diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java index 64b3c77..73f02e0 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java @@ -25,10 +25,10 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.List; -import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.Buffer; import org.apache.datasketches.memory.Memory; import org.apache.datasketches.memory.WritableBuffer; +import org.apache.datasketches.memory.WritableHandle; import org.apache.datasketches.memory.WritableMemory; import org.testng.annotations.Test; import org.testng.collections.Lists; @@ -203,7 +203,7 @@ public class BufferTest { ByteBuffer bb = ByteBuffer.allocate(n * 8); bb.order(ByteOrder.BIG_ENDIAN); Buffer buf = Buffer.wrap(bb); - assertEquals(buf.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); + assertEquals(buf.getByteOrder(), ByteOrder.BIG_ENDIAN); } @Test @@ -262,20 +262,21 @@ public class BufferTest { int n = 16; int n2 = n / 2; long[] arr = new long[n]; - for (int i = 0; i < n; i++) { arr[i] = i; } - WritableBuffer wbuf = WritableMemory.writableWrap(arr).asWritableBuffer(); + for (int i = 0; i < n; i++) { arr[i] = i; } //0...n-1 + WritableMemory mem = WritableMemory.writableWrap(arr); + WritableBuffer wbuf = mem.asWritableBuffer(); for (int i = 0; i < n; i++) { - assertEquals(wbuf.getLong(), i); //write all - //println("" + wmem.getLong(i * 8)); + assertEquals(wbuf.getLong(), i); //0...n-1 + println("" + wbuf.getLong(i * 8)); } - //println(""); + println(""); wbuf.setPosition(n2 * 8); WritableBuffer reg = wbuf.writableRegion(); for (int i = 0; i < n2; i++) { reg.putLong(i); } //rewrite top half wbuf.resetPosition(); for (int i = 0; i < n; i++) { - assertEquals(wbuf.getLong(), i % 8); - //println("" + wmem.getLong(i * 8)); + println("" + wbuf.getLong(i * 8)); + assertEquals(wbuf.getLong(), i % 8); //fail got 1 not 0 } } diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/ExampleMemoryRequestServerTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/ExampleMemoryRequestServerTest.java index 0cf345c..0ad16be 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/ExampleMemoryRequestServerTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/ExampleMemoryRequestServerTest.java @@ -131,7 +131,7 @@ public class ExampleMemoryRequestServerTest { @Override public WritableMemory request(WritableMemory currentWMem, long capacityBytes) { - ByteOrder order = currentWMem.getTypeByteOrder(); + ByteOrder order = currentWMem.getByteOrder(); WritableHandle handle = WritableMemory.allocateDirect(capacityBytes, order, this); WritableMemory wmem = handle.getWritable(); map.put(wmem, handle); //We track the newly allocated memory and its handle. diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java index f1ef17e..e0082ff 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java @@ -87,7 +87,7 @@ public class LeafImplTest { WritableMemory mem = WritableMemory.writableWrap(bb, NBO, dummyMemReqSvr); assertEquals(bb.isDirect(), mem.isDirect()); assertNotNull(((BaseStateImpl)mem).getUnsafeObject()); - checkCombinations(mem, off, cap, mem.isDirect(), mem.getTypeByteOrder(), true, true); + checkCombinations(mem, off, cap, mem.isDirect(), mem.getByteOrder(), true, true); //BB off heap, native order, has ByteBuffer, has MemReqSvr ByteBuffer dbb = ByteBuffer.allocateDirect((int)cap); @@ -96,7 +96,7 @@ public class LeafImplTest { mem = WritableMemory.writableWrap(dbb, NBO, dummyMemReqSvr); assertEquals(dbb.isDirect(), mem.isDirect()); assertNull(((BaseStateImpl)mem).getUnsafeObject()); - checkCombinations(mem, off, cap, mem.isDirect(), mem.getTypeByteOrder(), true, true); + checkCombinations(mem, off, cap, mem.isDirect(), mem.getByteOrder(), true, true); //BB on heap, non native order, has ByteBuffer, has MemReqSvr bb = ByteBuffer.allocate((int)cap); @@ -105,7 +105,7 @@ public class LeafImplTest { mem = WritableMemory.writableWrap(bb, NNBO, dummyMemReqSvr); assertEquals(bb.isDirect(), mem.isDirect()); assertNotNull(((BaseStateImpl)mem).getUnsafeObject()); - checkCombinations(mem, off, cap, mem.isDirect(), mem.getTypeByteOrder(), true, true); + checkCombinations(mem, off, cap, mem.isDirect(), mem.getByteOrder(), true, true); //BB off heap, non native order, has ByteBuffer, has MemReqSvr dbb = ByteBuffer.allocateDirect((int)cap); @@ -114,7 +114,7 @@ public class LeafImplTest { mem = WritableMemory.writableWrap(dbb, NNBO, dummyMemReqSvr); assertEquals(dbb.isDirect(), mem.isDirect()); assertNull(((BaseStateImpl)mem).getUnsafeObject()); - checkCombinations(mem, off, cap, mem.isDirect(), mem.getTypeByteOrder(), true, true); + checkCombinations(mem, off, cap, mem.isDirect(), mem.getByteOrder(), true, true); } @Test @@ -182,7 +182,7 @@ public class LeafImplTest { ByteBuffer bb = mem.getByteBuffer(); assertTrue( hasByteBuffer ? bb != null : bb == null); - assertTrue(mem.getTypeByteOrder() == bo); + assertTrue(mem.getByteOrder() == bo); if (hasMemReqSvr) { assertTrue(mem.getMemoryRequestServer() instanceof DummyMemoryRequestServer); } @@ -207,7 +207,7 @@ public class LeafImplTest { bb = buf.getByteBuffer(); assertTrue(hasByteBuffer ? bb != null : bb == null); - assertTrue(buf.getTypeByteOrder() == bo); + assertTrue(buf.getByteOrder() == bo); if (hasMemReqSvr) { assertTrue(buf.getMemoryRequestServer() instanceof DummyMemoryRequestServer); } @@ -232,7 +232,7 @@ public class LeafImplTest { bb = nnMem.getByteBuffer(); assertTrue( hasByteBuffer ? bb != null : bb == null); - assertTrue(nnMem.getTypeByteOrder() == oo); + assertTrue(nnMem.getByteOrder() == oo); if (hasMemReqSvr) { assertTrue(nnMem.getMemoryRequestServer() instanceof DummyMemoryRequestServer); } @@ -257,7 +257,7 @@ public class LeafImplTest { bb = nnBuf.getByteBuffer(); assertTrue( hasByteBuffer ? bb != null : bb == null); - assertTrue(nnBuf.getTypeByteOrder() == oo); + assertTrue(nnBuf.getByteOrder() == oo); if (hasMemReqSvr) { assertTrue(nnBuf.getMemoryRequestServer() instanceof DummyMemoryRequestServer); } diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java index 045c59f..c8d985b 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java @@ -210,8 +210,8 @@ public class MemoryTest { ByteBuffer bb = ByteBuffer.allocate(n * 8); bb.order(ByteOrder.BIG_ENDIAN); Memory mem = Memory.wrap(bb); - assertFalse(mem.getTypeByteOrder() == ByteOrder.nativeOrder()); - assertEquals(mem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); + assertFalse(mem.getByteOrder() == ByteOrder.nativeOrder()); + assertEquals(mem.getByteOrder(), ByteOrder.BIG_ENDIAN); } @Test diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java index b1fccf2..fe802f7 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java @@ -233,7 +233,7 @@ public class NativeWritableBufferImplTest { try (WritableHandle wrh = WritableMemory.allocateDirect(memCapacity)) { WritableMemory wmem = wrh.getWritable(); WritableBuffer wbuf = wmem.asWritableBuffer(); - wbuf.writableRegion(1, 64, wbuf.getTypeByteOrder()); //wrong! + wbuf.writableRegion(1, 64, wbuf.getByteOrder()); //wrong! } } @@ -476,9 +476,8 @@ public class NativeWritableBufferImplTest { WritableMemory wmem = WritableMemory.allocate(64); WritableMemory reg = wmem.writableRegion(32, 32); WritableBuffer buf = reg.asWritableBuffer(); - assertEquals(buf.getRegionOffset(), 32); - assertEquals(buf.getRegionOffset(0), 32); - assertEquals(buf.getCumulativeOffset(0), 32 + 16); + assertEquals(buf.getTotalOffset(), 32); + assertEquals(((BaseStateImpl)buf).getCumulativeOffset(0), 32 + 16); } @Test @@ -555,13 +554,13 @@ public class NativeWritableBufferImplTest { ByteBuffer bb = ByteBuffer.allocate(64); WritableBuffer wbuf = WritableBuffer.writableWrap(bb); @SuppressWarnings("unused") - WritableBuffer wreg = wbuf.writableRegion(0, 1, wbuf.getTypeByteOrder()); + WritableBuffer wreg = wbuf.writableRegion(0, 1, wbuf.getByteOrder()); try { Buffer buf = Buffer.wrap(bb); wbuf = (WritableBuffer) buf; @SuppressWarnings("unused") - WritableBuffer wreg2 = wbuf.writableRegion(0, 1, wbuf.getTypeByteOrder()); + WritableBuffer wreg2 = wbuf.writableRegion(0, 1, wbuf.getByteOrder()); Assert.fail(); } catch (ReadOnlyException expected) { // ignore @@ -572,7 +571,7 @@ public class NativeWritableBufferImplTest { public void checkZeroBuffer() { WritableMemory wmem = WritableMemory.allocate(8); WritableBuffer wbuf = wmem.asWritableBuffer(); - WritableBuffer reg = wbuf.writableRegion(0, 0, wbuf.getTypeByteOrder()); + WritableBuffer reg = wbuf.writableRegion(0, 0, wbuf.getByteOrder()); assertEquals(reg.getCapacity(), 0); } diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImplTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImplTest.java index e6d13cc..4cca6f8 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImplTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImplTest.java @@ -654,9 +654,8 @@ public class NativeWritableMemoryImplTest { public void checkCumAndRegionOffset() { WritableMemory wmem = WritableMemory.allocate(64); WritableMemory reg = wmem.writableRegion(32, 32); - assertEquals(reg.getRegionOffset(), 32); - assertEquals(reg.getRegionOffset(0), 32); - assertEquals(reg.getCumulativeOffset(0), 32 + 16); + assertEquals(reg.getTotalOffset(), 32); + assertEquals(((BaseStateImpl)reg).getCumulativeOffset(0), 32 + 16); } diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java index 57d481a..d7f0421 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableBufferImplTest.java @@ -239,10 +239,10 @@ public class NonNativeWritableBufferImplTest { WritableMemory wmem = WritableMemory.writableWrap(bArr, ByteOrder.BIG_ENDIAN); WritableBuffer wbuf = wmem.asWritableBuffer(); WritableBuffer wdup = wbuf.writableDuplicate(); - assertEquals(wdup.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); + assertEquals(wdup.getByteOrder(), ByteOrder.BIG_ENDIAN); WritableBuffer wreg = wbuf.writableRegion(); - assertEquals(wreg.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); + assertEquals(wreg.getByteOrder(), ByteOrder.BIG_ENDIAN); } @Test @@ -251,10 +251,10 @@ public class NonNativeWritableBufferImplTest { WritableMemory wmem = WritableMemory.writableWrap(bArr, ByteOrder.BIG_ENDIAN); Buffer buf = wmem.asBuffer(); Buffer dup = buf.duplicate(); - assertEquals(dup.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN); + assertEquals(dup.getByteOrder(), ByteOrder.LITTLE_ENDIAN); Buffer reg = buf.region(); - assertEquals(reg.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN); + assertEquals(reg.getByteOrder(), ByteOrder.LITTLE_ENDIAN); } } diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImplTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImplTest.java index c6bd5d0..b544e93 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImplTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/NonNativeWritableMemoryImplTest.java @@ -205,7 +205,7 @@ public class NonNativeWritableMemoryImplTest { @Test public void checkRegion() { WritableMemory wreg = wmem.writableRegion(0, wmem.getCapacity()); - assertEquals(wreg.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); + assertEquals(wreg.getByteOrder(), ByteOrder.BIG_ENDIAN); } @Test @@ -213,7 +213,7 @@ public class NonNativeWritableMemoryImplTest { byte[] bArr1 = new byte[0]; WritableMemory wmem1 = WritableMemory.writableWrap(bArr1, ByteOrder.BIG_ENDIAN); Memory reg = wmem1.region(0, wmem1.getCapacity()); - assertEquals(reg.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN); + assertEquals(reg.getByteOrder(), ByteOrder.LITTLE_ENDIAN); } } diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java index 1226cc5..e21eba8 100644 --- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java +++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/WritableMemoryTest.java @@ -38,9 +38,9 @@ public class WritableMemoryTest { public void wrapBigEndian() { ByteBuffer bb = ByteBuffer.allocate(64); //big endian WritableMemory wmem = WritableMemory.writableWrap(bb); - assertEquals(wmem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); + assertEquals(wmem.getByteOrder(), ByteOrder.BIG_ENDIAN); wmem = WritableMemory.writableWrap(bb, ByteOrder.nativeOrder()); - assertEquals(wmem.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN); + assertEquals(wmem.getByteOrder(), ByteOrder.LITTLE_ENDIAN); } @Test @@ -54,11 +54,11 @@ public class WritableMemoryTest { @Test public void allocateWithByteOrder() { WritableMemory wmem = WritableMemory.allocate(64, ByteOrder.BIG_ENDIAN); - assertEquals(wmem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); + assertEquals(wmem.getByteOrder(), ByteOrder.BIG_ENDIAN); wmem = WritableMemory.allocate(64, ByteOrder.LITTLE_ENDIAN); - assertEquals(wmem.getTypeByteOrder(), ByteOrder.LITTLE_ENDIAN); + assertEquals(wmem.getByteOrder(), ByteOrder.LITTLE_ENDIAN); wmem = WritableMemory.writableWrap(new byte[64], 32, 32, ByteOrder.BIG_ENDIAN); - assertEquals(wmem.getTypeByteOrder(), ByteOrder.BIG_ENDIAN); + assertEquals(wmem.getByteOrder(), ByteOrder.BIG_ENDIAN); } @Test @@ -163,11 +163,11 @@ public class WritableMemoryTest { @Test public void checkWrapWithBO() { WritableMemory wmem = WritableMemory.writableWrap(new byte[0], ByteOrder.BIG_ENDIAN); - boolean nativeBO = wmem.getTypeByteOrder() == ByteOrder.nativeOrder(); + boolean nativeBO = wmem.getByteOrder() == ByteOrder.nativeOrder(); assertFalse(nativeBO); println("" + nativeBO); wmem = WritableMemory.writableWrap(new byte[8], ByteOrder.BIG_ENDIAN); - nativeBO = wmem.getTypeByteOrder() == ByteOrder.nativeOrder(); + nativeBO = wmem.getByteOrder() == ByteOrder.nativeOrder(); assertFalse(nativeBO); println("" + nativeBO); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
