[foreign-memaccess+abi] RFR: 8265222: revisit foreign library loading

Athijegannathan Sundararajan sundar at openjdk.java.net
Thu May 6 11:05:25 UTC 2021


On Wed, 5 May 2021 18:24:11 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:

>> 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));

Yes, will add this as temporary hack for Windows.

-------------

PR: https://git.openjdk.java.net/panama-foreign/pull/526


More information about the panama-dev mailing list