From bed8ead673446c010261140c1360c0cea1f771b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thiago=20Henrique=20H=C3=BCpner?= Date: Mon, 27 May 2024 14:26:12 -0300 Subject: [PATCH] Avoid using FFM in JDK classes --- dev.thihup.jvisualg.ide/pom.xml | 4 +- .../jvisualg/ide/NativeImageFeature.java | 46 ------------------- 2 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 dev.thihup.jvisualg.ide/src/main/java/dev/thihup/jvisualg/ide/NativeImageFeature.java diff --git a/dev.thihup.jvisualg.ide/pom.xml b/dev.thihup.jvisualg.ide/pom.xml index a7c9c15..99b68bb 100644 --- a/dev.thihup.jvisualg.ide/pom.xml +++ b/dev.thihup.jvisualg.ide/pom.xml @@ -95,9 +95,7 @@ --no-fallback -H:+ForeignAPISupport - --features=dev.thihup.jvisualg.ide.NativeImageFeature - -Ob - -march=skylake-avx512 + -Dsun.font.layout.ffm=false diff --git a/dev.thihup.jvisualg.ide/src/main/java/dev/thihup/jvisualg/ide/NativeImageFeature.java b/dev.thihup.jvisualg.ide/src/main/java/dev/thihup/jvisualg/ide/NativeImageFeature.java deleted file mode 100644 index 57fd17f..0000000 --- a/dev.thihup.jvisualg.ide/src/main/java/dev/thihup/jvisualg/ide/NativeImageFeature.java +++ /dev/null @@ -1,46 +0,0 @@ -package dev.thihup.jvisualg.ide; - -import org.graalvm.nativeimage.hosted.Feature; -import org.graalvm.nativeimage.hosted.RuntimeForeignAccess; - -import java.lang.foreign.FunctionDescriptor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import static java.lang.foreign.ValueLayout.*; -import static java.lang.foreign.ValueLayout.JAVA_INT; - -public class NativeImageFeature implements Feature { - - @Override - public void duringSetup(DuringSetupAccess access) { - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.of(ADDRESS, JAVA_LONG)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.of(ADDRESS, ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.ofVoid(ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, JAVA_INT, ADDRESS, ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, ADDRESS, ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, JAVA_INT, ADDRESS, ADDRESS, ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.of(ADDRESS, ADDRESS, ADDRESS, ADDRESS, ADDRESS, ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.ofVoid(JAVA_INT, JAVA_INT, JAVA_INT, JAVA_FLOAT, JAVA_FLOAT, JAVA_FLOAT, JAVA_INT, JAVA_INT, ADDRESS, ADDRESS)); - RuntimeForeignAccess.registerForDowncall(FunctionDescriptor.ofVoid(JAVA_FLOAT, ADDRESS, ADDRESS, ADDRESS, JAVA_INT, JAVA_INT, JAVA_INT, JAVA_INT, JAVA_INT, JAVA_FLOAT, JAVA_FLOAT, JAVA_INT, JAVA_INT, ADDRESS, ADDRESS)); - - try { - Method registerForUpcall = RuntimeForeignAccess.class.getDeclaredMethod("registerForUpcall", Object.class, Object[].class); - - Object[] objects = new Object[0]; - registerForUpcall.invoke(null, FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, JAVA_INT, ADDRESS, ADDRESS), objects); - registerForUpcall.invoke(null, FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, ADDRESS, ADDRESS), objects); - registerForUpcall.invoke(null, FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, ADDRESS), objects); - registerForUpcall.invoke(null, FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, ADDRESS), objects); - registerForUpcall.invoke(null, FunctionDescriptor.of(JAVA_INT, ADDRESS, ADDRESS, JAVA_INT, JAVA_INT, ADDRESS, ADDRESS, ADDRESS), objects); - registerForUpcall.invoke(null, FunctionDescriptor.of(JAVA_INT, JAVA_INT, ADDRESS), objects); - registerForUpcall.invoke(null, FunctionDescriptor.ofVoid(JAVA_INT, JAVA_INT, JAVA_INT, JAVA_FLOAT, JAVA_FLOAT, JAVA_FLOAT, JAVA_INT, JAVA_INT, ADDRESS, ADDRESS), objects); - - } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { - throw new RuntimeException(e); - } - - } -}