This is an automated email from the ASF dual-hosted git repository. leerho pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/datasketches-memory17.git
commit 7990943656817f58d2c71139cede95f9d3f0d3f5 Author: Lee Rhodes <[email protected]> AuthorDate: Thu Sep 28 12:59:05 2023 -0700 Remove need for transitive requires in module-info. --- src/main/java/module-info.java | 2 +- .../org/apache/datasketches/memory/BaseState.java | 9 --------- .../apache/datasketches/memory/MurmurHash3.java | 17 ----------------- .../memory/internal/BaseStateImpl.java | 9 +++++---- .../memory/internal/MemoryScopeImpl.java | 11 ++++------- .../internal/AllocateDirectMapMemoryTest.java | 22 +++++++++++++++------- .../memory/internal/BaseStateTest.java | 16 +++++++++------- .../memory/internal/MurmurHash3v3Test.java | 16 ---------------- 8 files changed, 34 insertions(+), 68 deletions(-) diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 1e9d0cf..36c8a10 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -19,6 +19,6 @@ module org.apache.datasketches.memory { requires java.base; requires java.logging; - requires transitive jdk.incubator.foreign; + requires jdk.incubator.foreign; exports org.apache.datasketches.memory; } \ No newline at end of file diff --git a/src/main/java/org/apache/datasketches/memory/BaseState.java b/src/main/java/org/apache/datasketches/memory/BaseState.java index e19064c..b1a0893 100644 --- a/src/main/java/org/apache/datasketches/memory/BaseState.java +++ b/src/main/java/org/apache/datasketches/memory/BaseState.java @@ -22,8 +22,6 @@ package org.apache.datasketches.memory; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import jdk.incubator.foreign.MemorySegment; - /** * Keeps key configuration state for Memory and Buffer plus some common static variables * and check methods. @@ -243,13 +241,6 @@ public interface BaseState { */ String toHexString(String comment, long offsetBytes, int lengthBytes, boolean withData); - /** - * Returns a copy of the underlying MemorySegment. - * The size is limited to <i>Integer.MAX_VALUE</i>. - * @return a copy of the underlying MemorySegment - */ - MemorySegment toMemorySegment(); - /** * Unloads the contents of this mapped segment from physical memory. Please refer to * <a href="https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/MemorySegment.html#unload()">unload()</a> diff --git a/src/main/java/org/apache/datasketches/memory/MurmurHash3.java b/src/main/java/org/apache/datasketches/memory/MurmurHash3.java index 7fd992c..241e8d0 100644 --- a/src/main/java/org/apache/datasketches/memory/MurmurHash3.java +++ b/src/main/java/org/apache/datasketches/memory/MurmurHash3.java @@ -21,8 +21,6 @@ package org.apache.datasketches.memory; import org.apache.datasketches.memory.internal.MurmurHash3v3; -import jdk.incubator.foreign.MemorySegment; - /** * <p>The MurmurHash3 is a fast, non-cryptographic, 128-bit hash function that has * excellent avalanche and 2-way bit independence properties.</p> @@ -151,19 +149,4 @@ public final class MurmurHash3 { return MurmurHash3v3.hash(mem, offsetBytes, lengthBytes, seed, hashOut); } - /** - * Returns a 128-bit hash of the input as a long array of size 2. - * - * @param seg The input MemorySegment. Must be non-null and non-empty. - * @param offsetBytes the starting point within Memory. - * @param lengthBytes the total number of bytes to be hashed. - * @param seed A long valued seed. - * @param hashOut the size 2 long array for the resulting 128-bit hash - * @return the hash. - */ - public static long[] hash(final MemorySegment seg, final long offsetBytes, final long lengthBytes, - final long seed, final long[] hashOut) { - return MurmurHash3v3.hash(seg, offsetBytes, lengthBytes, seed, hashOut); - } - } diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java index bc0e603..606fcca 100644 --- a/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java +++ b/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java @@ -409,11 +409,12 @@ abstract class BaseStateImpl implements BaseState { return toHex(this, comment, offsetBytes, lengthBytes, withData); } - @Override + /** + * Returns the underlying MemorySegment. + * @return a copy of the underlying MemorySegment + */ public MemorySegment toMemorySegment() { - final MemorySegment arrSeg = MemorySegment.ofArray(new byte[(int)seg.byteSize()]); - arrSeg.copyFrom(seg); - return arrSeg; + return seg; } @Override diff --git a/src/main/java/org/apache/datasketches/memory/internal/MemoryScopeImpl.java b/src/main/java/org/apache/datasketches/memory/internal/MemoryScopeImpl.java index 8b022d7..fc14b81 100644 --- a/src/main/java/org/apache/datasketches/memory/internal/MemoryScopeImpl.java +++ b/src/main/java/org/apache/datasketches/memory/internal/MemoryScopeImpl.java @@ -124,10 +124,7 @@ public class MemoryScopeImpl extends MemoryScope { @Override public void release(final MemoryScope.Handle handle) { - final HandleImpl handleImpl = (MemoryScopeImpl.HandleImpl) handle; - if (handleImpl.scope() == this) { - handleImpl.release(handleImpl); - } + handle.release(handle); } /** @@ -144,12 +141,12 @@ public class MemoryScopeImpl extends MemoryScope { } @Override - public MemoryScope scope() { return MemoryScopeImpl.this; } + public MemoryScopeImpl scope() { return MemoryScopeImpl.this; } @Override public void release(final MemoryScope.Handle handle) { - if ((MemoryScopeImpl.HandleImpl) handle == myResourceHandle) { - MemoryScopeImpl.this.resourceScope.release(myResourceHandle); + if (((MemoryScopeImpl.HandleImpl) handle).myResourceHandle == myResourceHandle) { + resourceScope.release(myResourceHandle); } } } diff --git a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java index 29a1345..4057878 100644 --- a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java +++ b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java @@ -30,6 +30,7 @@ import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import java.io.File; +import java.io.IOException; import java.nio.ByteOrder; import org.apache.datasketches.memory.Memory; @@ -98,20 +99,27 @@ public class AllocateDirectMapMemoryTest { @SuppressWarnings("resource") @Test - public void testHandleHandoff() throws Exception { + public void testHandleLock() { File file = getResourceFile("GettysburgAddress.txt"); long memCapacity = file.length(); MemoryScope scope = MemoryScope.newConfinedScope(); - Memory mem = Memory.map(file, 0, memCapacity, scope, ByteOrder.nativeOrder()); + Memory mem; + try { + mem = Memory.map(file, 0, memCapacity, scope, ByteOrder.nativeOrder()); + } catch (IOException e) { + throw new RuntimeException(e); + } MemoryScope.Handle handle = scope.acquire(); + mem.load(); + assertTrue(mem.isLoaded()); + assertTrue(mem.isAlive()); try { - mem.load(); - assertTrue(mem.isLoaded()); - } finally { + mem.close(); + fail(); + } catch (IllegalStateException e) { //handle must be released before close mem.scope().release(handle); } - assertTrue(mem.isAlive()); - mem.close(); //handle must be released before close + mem.close(); assertFalse(mem.isAlive()); } diff --git a/src/test/java/org/apache/datasketches/memory/internal/BaseStateTest.java b/src/test/java/org/apache/datasketches/memory/internal/BaseStateTest.java index edc3ad0..b6016e8 100644 --- a/src/test/java/org/apache/datasketches/memory/internal/BaseStateTest.java +++ b/src/test/java/org/apache/datasketches/memory/internal/BaseStateTest.java @@ -19,9 +19,11 @@ package org.apache.datasketches.memory.internal; +import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; +import java.nio.ByteBuffer; import java.nio.ByteOrder; import org.apache.datasketches.memory.Buffer; @@ -65,7 +67,7 @@ public class BaseStateTest { assertTrue(out != 0); } - @Test + @Test //visual only public void checkTypeDecode() { for (int i = 0; i < 256; i++) { String str = BaseStateImpl.typeDecode(i); @@ -73,20 +75,20 @@ public class BaseStateTest { } } - @Test + @Test //visual only public void checkToHexString() { WritableMemory mem = WritableMemory.writableWrap(new byte[16]); - println(mem.toHexString("baseMem", 0, 16, true)); for (int i = 0; i < 16; i++) { mem.putByte(i, (byte)i); } + println(mem.toHexString("baseMem", 0, 16, true)); //empty Buffer buf = mem.asBuffer(); println(buf.toHexString("buffer", 0, 16, true)); } @Test - public void checkToMemorySegment() { + public void checkAsByteBuffer() { WritableMemory mem = WritableMemory.allocate(8); - mem.toMemorySegment(); - mem.asByteBufferView(ByteOrder.nativeOrder()); + ByteBuffer buf = mem.asByteBufferView(ByteOrder.nativeOrder()); + assertEquals(buf.capacity(), 8); } /********************/ @@ -99,7 +101,7 @@ public class BaseStateTest { * @param s value to print */ static void println(String s) { - //System.out.println(s); //disable here + System.out.println(s); //disable here } } diff --git a/src/test/java/org/apache/datasketches/memory/internal/MurmurHash3v3Test.java b/src/test/java/org/apache/datasketches/memory/internal/MurmurHash3v3Test.java index b8e0c83..f8ecad4 100644 --- a/src/test/java/org/apache/datasketches/memory/internal/MurmurHash3v3Test.java +++ b/src/test/java/org/apache/datasketches/memory/internal/MurmurHash3v3Test.java @@ -31,8 +31,6 @@ import org.apache.datasketches.memory.WritableMemory; import org.testng.Assert; import org.testng.annotations.Test; -import jdk.incubator.foreign.MemorySegment; - /** * Tests the MurmurHash3 against specific, known hash results given known * inputs obtained from the public domain C++ version 150. @@ -54,20 +52,6 @@ public class MurmurHash3v3Test { Assert.assertEquals(result[1], h2); } - @Test - public void checkByteArrRemainderGT8withSegment() { //byte[], remainder > 8 - String keyStr = "The quick brown fox jumps over the lazy dog"; - byte[] key = keyStr.getBytes(UTF_8); - long[] out = new long[2]; - MemorySegment seg = MemorySegment.ofArray(key); - long[] result = hash(seg, 0, seg.byteSize(), 0, out); - //Should be: - long h1 = 0xe34bbc7bbc071b6cL; - long h2 = 0x7a433ca9c49a9347L; - Assert.assertEquals(result[0], h1); - Assert.assertEquals(result[1], h2); - } - @Test public void checkByteArrChange1bit() { //byte[], change one bit String keyStr = "The quick brown fox jumps over the lazy eog"; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
