You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2023/10/02 17:43:41 UTC
[datasketches-memory17] 05/08: Remove need for transitive requires in module-info.
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 <le...@users.noreply.github.com>
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: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org