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]

Reply via email to