< 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,27 +20,28 @@
* 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 static org.graalvm.compiler.core.common.CompilationIdentifier.INVALID_COMPILATION_ID;
-import org.junit.Test;
+import java.util.List;
+import java.util.Map;
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.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,50 +49,31 @@
/**
* 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() {
+ 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();
- Set<ResolvedJavaMethod> pluginMethods = invocationPlugins.getMethods();
+ Map<String, List<Binding>> bindings = invocationPlugins.getBindings(true);
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);
+ 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 >