From 982991c900c0398ffcba827866905e115fa2862d Mon Sep 17 00:00:00 2001 From: Tomas Zezula Date: Wed, 13 Sep 2023 11:11:25 +0200 Subject: [PATCH] [GR-47001] Truffle TCKs PermissionsFeature relies on out-dated jdk.internal.reflect.UnsafeFieldAccessorFactory. --- .../svm/truffle/tck/PermissionsFeature.java | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/substratevm/src/com.oracle.svm.truffle.tck/src/com/oracle/svm/truffle/tck/PermissionsFeature.java b/substratevm/src/com.oracle.svm.truffle.tck/src/com/oracle/svm/truffle/tck/PermissionsFeature.java index feadbaa5e7d8..93e412e233a3 100644 --- a/substratevm/src/com.oracle.svm.truffle.tck/src/com/oracle/svm/truffle/tck/PermissionsFeature.java +++ b/substratevm/src/com.oracle.svm.truffle.tck/src/com/oracle/svm/truffle/tck/PermissionsFeature.java @@ -75,7 +75,6 @@ import com.oracle.svm.core.option.HostedOptionKey; import com.oracle.svm.core.option.LocatableMultiOptionValue; import com.oracle.svm.core.util.UserError; -import com.oracle.svm.core.util.VMError; import com.oracle.svm.hosted.FeatureImpl; import com.oracle.svm.hosted.ImageClassLoader; import com.oracle.svm.hosted.SVMHost; @@ -166,7 +165,6 @@ public boolean getAsBoolean() { /** * Classes for reflective accesses which are opaque for permission analysis. */ - private AnalysisType reflectionFieldAccessorFactory; private InlinedUnsafeMethodNode inlinedUnsafeCall; @@ -218,8 +216,6 @@ public void afterAnalysis(AfterAnalysisAccess access) { Options.TruffleTCKPermissionsExcludeFiles, new ResourceAsOptionDecorator(getClass().getPackage().getName().replace('.', '/') + "/resources/jre.json"), CONFIG); - reflectionFieldAccessorFactory = bb.getMetaAccess().lookupJavaType(loadClassOrFail("jdk.internal.reflect.UnsafeFieldAccessorFactory")); - VMError.guarantee(reflectionFieldAccessorFactory != null, "Cannot load one or several reflection types"); whiteList = parser.getLoadedWhiteList(); Set deniedMethods = new HashSet<>(); deniedMethods.addAll(findMethods(bb, SecurityManager.class, (m) -> m.getName().startsWith("check"))); @@ -459,7 +455,7 @@ private int collectViolations( } else { nextCaller: for (BaseMethodNode caller : callers) { for (CallGraphFilter filter : contextFilters) { - if (isReflectionFieldAccessorFactory(caller) || filter.test(mNode, caller, visited)) { + if (filter.test(mNode, caller, visited)) { continue nextCaller; } } @@ -473,14 +469,6 @@ private int collectViolations( return useNoReports; } - /** - * Tests if the given {@link BaseMethodNode} is part of the factory of field accessors. - */ - private boolean isReflectionFieldAccessorFactory(BaseMethodNode methodNode) { - AnalysisMethod method = methodNode.getMethod(); - return method != null && reflectionFieldAccessorFactory.isAssignableFrom(method.getDeclaringClass()); - } - /** * Tests if method represented by given {@link BaseMethodNode} is loaded by a system * {@link ClassLoader}. @@ -648,7 +636,7 @@ public boolean test(BaseMethodNode methodNode, BaseMethodNode callerNode, Linked /** * Filters out {@code AccessController#doPrivileged} done by JRE. */ - private final class SafePrivilegedRecognizer implements CallGraphFilter { + private static final class SafePrivilegedRecognizer implements CallGraphFilter { private final SVMHost hostVM; private final Set doPrivileged;