< prev index next >

test/compiler/jvmci/compilerToVM/FindUniqueConcreteMethodTest.java

Print this page

        

*** 30,49 **** --- 30,61 ---- * @modules java.base/jdk.internal.misc * @modules java.base/jdk.internal.org.objectweb.asm * java.base/jdk.internal.org.objectweb.asm.tree * jdk.vm.ci/jdk.vm.ci.hotspot * jdk.vm.ci/jdk.vm.ci.code + * jdk.vm.ci/jdk.vm.ci.meta + * jdk.vm.ci/jdk.vm.ci.runtime * @build jdk.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper + * @build compiler.jvmci.common.testcases.DuplicateSimpleSingleImplementerInterface + * @build compiler.jvmci.common.testcases.SimpleSingleImplementerInterface + * @build compiler.jvmci.common.testcases.MultipleImplementer1 + * @build compiler.jvmci.common.testcases.MultipleSuperImplementers + * @build compiler.jvmci.common.testcases.SingleImplementer + * @build compiler.jvmci.common.testcases.SingleImplementerInterface + * @build compiler.jvmci.common.testcases.SingleSubclass * @build compiler.jvmci.compilerToVM.FindUniqueConcreteMethodTest * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * compiler.jvmci.compilerToVM.FindUniqueConcreteMethodTest */ package compiler.jvmci.compilerToVM; import compiler.jvmci.common.CTVMUtilities; + import compiler.jvmci.common.testcases.DuplicateSimpleSingleImplementerInterface; + import compiler.jvmci.common.testcases.SimpleSingleImplementerInterface; import compiler.jvmci.common.testcases.MultipleImplementer1; + import compiler.jvmci.common.testcases.MultipleSuperImplementers; import compiler.jvmci.common.testcases.SingleImplementer; import compiler.jvmci.common.testcases.SingleImplementerInterface; import compiler.jvmci.common.testcases.SingleSubclass; import jdk.test.lib.Asserts; import jdk.test.lib.Utils;
*** 94,111 **** result.add(new TestCase(true, SingleImplementer.class, SingleImplementerInterface.class, "defaultMethod")); // static method result.add(new TestCase(false, SingleSubclass.class, SingleSubclass.class, "staticMethod")); return result; } private void runTest(TestCase tcase) throws NoSuchMethodException { System.out.println(tcase); Method method = tcase.holder.getDeclaredMethod(tcase.methodName); HotSpotResolvedJavaMethod testMethod = CTVMUtilities ! .getResolvedMethod(tcase.receiver, method); HotSpotResolvedObjectType resolvedType = CompilerToVMHelper .lookupType(Utils.toJVMTypeSignature(tcase.receiver), getClass(), /* resolve = */ true); HotSpotResolvedJavaMethod concreteMethod = CompilerToVMHelper .findUniqueConcreteMethod(resolvedType, testMethod); --- 106,128 ---- result.add(new TestCase(true, SingleImplementer.class, SingleImplementerInterface.class, "defaultMethod")); // static method result.add(new TestCase(false, SingleSubclass.class, SingleSubclass.class, "staticMethod")); + // interface method + result.add(new TestCase(false, MultipleSuperImplementers.class, + DuplicateSimpleSingleImplementerInterface.class, "interfaceMethod", false)); + result.add(new TestCase(false, MultipleSuperImplementers.class, + SimpleSingleImplementerInterface.class, "interfaceMethod", false)); return result; } private void runTest(TestCase tcase) throws NoSuchMethodException { System.out.println(tcase); Method method = tcase.holder.getDeclaredMethod(tcase.methodName); HotSpotResolvedJavaMethod testMethod = CTVMUtilities ! .getResolvedMethod(tcase.methodFromReceiver ? tcase.receiver : tcase.holder, method); HotSpotResolvedObjectType resolvedType = CompilerToVMHelper .lookupType(Utils.toJVMTypeSignature(tcase.receiver), getClass(), /* resolve = */ true); HotSpotResolvedJavaMethod concreteMethod = CompilerToVMHelper .findUniqueConcreteMethod(resolvedType, testMethod);
*** 116,137 **** private static class TestCase { public final Class<?> receiver; public final Class<?> holder; public final String methodName; public final boolean isPositive; public TestCase(boolean isPositive, Class<?> clazz, Class<?> holder, ! String methodName) { this.receiver = clazz; this.methodName = methodName; this.isPositive = isPositive; this.holder = holder; } @Override public String toString() { ! return String.format("CASE: receiver=%s, holder=%s, method=%s," ! + " isPositive=%s", receiver.getName(), ! holder.getName(), methodName, isPositive); } } } --- 133,159 ---- private static class TestCase { public final Class<?> receiver; public final Class<?> holder; public final String methodName; public final boolean isPositive; + public final boolean methodFromReceiver; public TestCase(boolean isPositive, Class<?> clazz, Class<?> holder, ! String methodName, boolean methodFromReceiver) { this.receiver = clazz; this.methodName = methodName; this.isPositive = isPositive; this.holder = holder; + this.methodFromReceiver = methodFromReceiver; + } + + public TestCase(boolean isPositive, Class<?> clazz, Class<?> holder, String methodName) { + this(isPositive, clazz, holder, methodName, true); } @Override public String toString() { ! return String.format("CASE: receiver=%s, holder=%s, method=%s, isPositive=%s, methodFromReceiver=%s", ! receiver.getName(), holder.getName(), methodName, isPositive, methodFromReceiver); } } }
< prev index next >