[foreign-memaccess+abi] RFR: 8265222: revisit foreign library loading
Jorn Vernee
jvernee at openjdk.java.net
Wed May 5 18:27:11 UTC 2021
On Wed, 5 May 2021 16:49:04 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> LibraryLookup removed. CLinker.findNative added. System.loadLibrary has to be used to load library
>
> src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java line 422:
>
>> 420: FunctionDescriptor.of(C_POINTER, C_LONG_LONG));
>> 421:
>> 422: static final MethodHandle MH_FREE = linker.downcallHandle(CLinker.findNative("free").get(),
>
> These symbol lookups fail on Windows.
Following fix works:
diff --git a/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java b/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java
index d705d414c0d..708c005d1d9 100644
--- a/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java
+++ b/src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java
@@ -50,6 +50,7 @@ import java.lang.invoke.MethodType;
import java.lang.invoke.VarHandle;
import java.lang.ref.Reference;
import java.nio.charset.Charset;
+import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@@ -415,6 +416,9 @@ public class SharedUtils {
private static class AllocHolder {
private static final CLinker linker = getSystemLinker();
+ static {
+ System.load(Path.of(System.getenv("SystemRoot"), "System32", "msvcrt.dll").toAbsolutePath().toString());
+ }
static final MethodHandle MH_MALLOC = linker.downcallHandle(CLinker.findNative("malloc").get(),
MethodType.methodType(MemoryAddress.class, long.class),
FunctionDescriptor.of(C_POINTER, C_LONG_LONG));
-------------
PR: https://git.openjdk.java.net/panama-foreign/pull/526
More information about the panama-dev
mailing list