< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/TestIntrinsicCompiles.java

Print this page

        

*** 20,46 **** * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.hotspot.test; ! import java.util.List; ! import java.util.Set; ! import org.junit.Test; import org.graalvm.compiler.api.test.Graal; - import org.graalvm.compiler.core.common.CompilationIdentifier; import org.graalvm.compiler.core.test.GraalCompilerTest; import org.graalvm.compiler.hotspot.HotSpotGraalCompiler; import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider; import org.graalvm.compiler.hotspot.meta.HotSpotProviders; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins; import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin; import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins; import org.graalvm.compiler.nodes.graphbuilderconf.MethodSubstitutionPlugin; import org.graalvm.compiler.runtime.RuntimeProvider; import jdk.vm.ci.hotspot.HotSpotVMConfigStore; import jdk.vm.ci.hotspot.VMIntrinsicMethod; import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.runtime.JVMCI; --- 20,47 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.hotspot.test; ! import static org.graalvm.compiler.core.common.CompilationIdentifier.INVALID_COMPILATION_ID; ! import java.util.List; ! import java.util.Map; import org.graalvm.compiler.api.test.Graal; import org.graalvm.compiler.core.test.GraalCompilerTest; import org.graalvm.compiler.hotspot.HotSpotGraalCompiler; import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider; import org.graalvm.compiler.hotspot.meta.HotSpotProviders; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins; import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin; import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins; + import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins.Binding; import org.graalvm.compiler.nodes.graphbuilderconf.MethodSubstitutionPlugin; import org.graalvm.compiler.runtime.RuntimeProvider; + import org.junit.Test; import jdk.vm.ci.hotspot.HotSpotVMConfigStore; import jdk.vm.ci.hotspot.VMIntrinsicMethod; import jdk.vm.ci.meta.ResolvedJavaMethod; import jdk.vm.ci.runtime.JVMCI;
*** 48,97 **** /** * Exercise the compilation of intrinsic method substitutions. */ public class TestIntrinsicCompiles extends GraalCompilerTest { - private static boolean match(ResolvedJavaMethod method, VMIntrinsicMethod intrinsic) { - if (intrinsic.name.equals(method.getName())) { - if (intrinsic.descriptor.equals(method.getSignature().toMethodDescriptor())) { - String declaringClass = method.getDeclaringClass().toClassName().replace('.', '/'); - if (declaringClass.equals(intrinsic.declaringClass)) { - return true; - } - } - } - return false; - } - - private static ResolvedJavaMethod findMethod(Set<ResolvedJavaMethod> methods, VMIntrinsicMethod intrinsic) { - for (ResolvedJavaMethod method : methods) { - if (match(method, intrinsic)) { - return method; - } - } - return null; - } - @Test @SuppressWarnings("try") ! public void test() { HotSpotGraalCompiler compiler = (HotSpotGraalCompiler) JVMCI.getRuntime().getCompiler(); HotSpotGraalRuntimeProvider rt = (HotSpotGraalRuntimeProvider) Graal.getRequiredCapability(RuntimeProvider.class); HotSpotProviders providers = rt.getHostBackend().getProviders(); Plugins graphBuilderPlugins = providers.getGraphBuilderPlugins(); InvocationPlugins invocationPlugins = graphBuilderPlugins.getInvocationPlugins(); ! Set<ResolvedJavaMethod> pluginMethods = invocationPlugins.getMethods(); HotSpotVMConfigStore store = rt.getVMConfig().getStore(); List<VMIntrinsicMethod> intrinsics = store.getIntrinsics(); for (VMIntrinsicMethod intrinsic : intrinsics) { ! ResolvedJavaMethod method = findMethod(pluginMethods, intrinsic); ! if (method != null) { ! InvocationPlugin plugin = invocationPlugins.lookupInvocation(method); ! if (plugin instanceof MethodSubstitutionPlugin && !method.isNative()) { ! StructuredGraph graph = compiler.getIntrinsicGraph(method, providers, CompilationIdentifier.INVALID_COMPILATION_ID); getCode(method, graph); } } } } } --- 49,79 ---- /** * Exercise the compilation of intrinsic method substitutions. */ public class TestIntrinsicCompiles extends GraalCompilerTest { @Test @SuppressWarnings("try") ! public void test() throws ClassNotFoundException { HotSpotGraalCompiler compiler = (HotSpotGraalCompiler) JVMCI.getRuntime().getCompiler(); HotSpotGraalRuntimeProvider rt = (HotSpotGraalRuntimeProvider) Graal.getRequiredCapability(RuntimeProvider.class); HotSpotProviders providers = rt.getHostBackend().getProviders(); Plugins graphBuilderPlugins = providers.getGraphBuilderPlugins(); InvocationPlugins invocationPlugins = graphBuilderPlugins.getInvocationPlugins(); ! Map<String, List<Binding>> bindings = invocationPlugins.getBindings(true); HotSpotVMConfigStore store = rt.getVMConfig().getStore(); List<VMIntrinsicMethod> intrinsics = store.getIntrinsics(); for (VMIntrinsicMethod intrinsic : intrinsics) { ! InvocationPlugin plugin = CheckGraalIntrinsics.findPlugin(bindings, intrinsic); ! if (plugin != null) { ! if (plugin instanceof MethodSubstitutionPlugin) { ! ResolvedJavaMethod method = CheckGraalIntrinsics.resolveIntrinsic(getMetaAccess(), intrinsic); ! if (!method.isNative()) { ! StructuredGraph graph = compiler.getIntrinsicGraph(method, providers, INVALID_COMPILATION_ID); getCode(method, graph); } } } } + } }
< prev index next >