25 * @test
26 * @bug 8136421
27 * @requires vm.jvmci
28 * @library /test/lib /
29 * @library ../common/patches
30 * @modules java.base/jdk.internal.misc
31 * @modules java.base/jdk.internal.org.objectweb.asm
32 * java.base/jdk.internal.org.objectweb.asm.tree
33 * jdk.vm.ci/jdk.vm.ci.hotspot
34 * jdk.vm.ci/jdk.vm.ci.code
35 *
36 * @build jdk.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
37 * @run driver ClassFileInstaller sun.hotspot.WhiteBox
38 * sun.hotspot.WhiteBox$WhiteBoxPermission
39 * @run main/othervm -Xbootclasspath/a:.
40 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
41 * -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
42 * compiler.jvmci.compilerToVM.IsCompilableTest
43 * @run main/othervm -Xbootclasspath/a:.
44 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
45 * -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
46 * compiler.jvmci.compilerToVM.IsCompilableTest
47 */
48
49 package compiler.jvmci.compilerToVM;
50
51 import compiler.jvmci.common.CTVMUtilities;
52 import jdk.test.lib.Asserts;
53 import jdk.vm.ci.hotspot.CompilerToVMHelper;
54 import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod;
55 import sun.hotspot.WhiteBox;
56
57 import java.lang.reflect.Executable;
58 import java.util.ArrayList;
59 import java.util.Arrays;
60 import java.util.List;
61
62 public class IsCompilableTest {
63
64 private static final WhiteBox WB = WhiteBox.getWhiteBox();
65
66 public static void main(String[] args) {
67 List<Executable> testCases = createTestCases();
68 testCases.forEach(IsCompilableTest::runSanityTest);
69 }
70
71 private static void runSanityTest(Executable aMethod) {
72 boolean UseJVMCICompiler = (Boolean) WB.getVMFlag("UseJVMCICompiler");
73 HotSpotResolvedJavaMethod method = CTVMUtilities
74 .getResolvedMethod(aMethod);
75 boolean isCompilable = CompilerToVMHelper.isCompilable(method);
76 boolean expected = UseJVMCICompiler || WB.isMethodCompilable(aMethod);
77 Asserts.assertEQ(isCompilable, expected, "Unexpected initial " +
78 "value of property 'compilable'");
79
80 if (!UseJVMCICompiler) {
81 WB.makeMethodNotCompilable(aMethod);
82 isCompilable = CompilerToVMHelper.isCompilable(method);
83 Asserts.assertFalse(isCompilable, aMethod + "Unexpected value of " +
84 "property 'isCompilable' after setting 'compilable' to false");
85 }
86 }
87
88 private static List<Executable> createTestCases() {
89 List<Executable> testCases = new ArrayList<>();
90
91 Class<?> aClass = DummyClass.class;
92 testCases.addAll(Arrays.asList(aClass.getDeclaredMethods()));
93 testCases.addAll(Arrays.asList(aClass.getDeclaredConstructors()));
94 return testCases;
95 }
96 }
|
25 * @test
26 * @bug 8136421
27 * @requires vm.jvmci
28 * @library /test/lib /
29 * @library ../common/patches
30 * @modules java.base/jdk.internal.misc
31 * @modules java.base/jdk.internal.org.objectweb.asm
32 * java.base/jdk.internal.org.objectweb.asm.tree
33 * jdk.vm.ci/jdk.vm.ci.hotspot
34 * jdk.vm.ci/jdk.vm.ci.code
35 *
36 * @build jdk.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
37 * @run driver ClassFileInstaller sun.hotspot.WhiteBox
38 * sun.hotspot.WhiteBox$WhiteBoxPermission
39 * @run main/othervm -Xbootclasspath/a:.
40 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
41 * -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
42 * compiler.jvmci.compilerToVM.IsCompilableTest
43 * @run main/othervm -Xbootclasspath/a:.
44 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
45 * -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-UseJVMCICompiler
46 * compiler.jvmci.compilerToVM.IsCompilableTest
47 */
48
49 package compiler.jvmci.compilerToVM;
50
51 import compiler.jvmci.common.CTVMUtilities;
52 import jdk.test.lib.Asserts;
53 import jdk.vm.ci.hotspot.CompilerToVMHelper;
54 import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod;
55 import sun.hotspot.WhiteBox;
56
57 import java.lang.reflect.Executable;
58 import java.util.ArrayList;
59 import java.util.Arrays;
60 import java.util.List;
61
62 public class IsCompilableTest {
63
64 private static final WhiteBox WB = WhiteBox.getWhiteBox();
65
66 public static void main(String[] args) {
67 List<Executable> testCases = createTestCases();
68 testCases.forEach(IsCompilableTest::runSanityTest);
69 }
70
71 private static void runSanityTest(Executable aMethod) {
72 HotSpotResolvedJavaMethod method = CTVMUtilities
73 .getResolvedMethod(aMethod);
74 boolean isCompilable = CompilerToVMHelper.isCompilable(method);
75 boolean expected = WB.isMethodCompilable(aMethod);
76 Asserts.assertEQ(isCompilable, expected, "Unexpected initial " +
77 "value of property 'compilable'");
78
79 WB.makeMethodNotCompilable(aMethod);
80 isCompilable = CompilerToVMHelper.isCompilable(method);
81 Asserts.assertFalse(isCompilable, aMethod + "Unexpected value of " +
82 "property 'isCompilable' after setting 'compilable' to false");
83 }
84
85 private static List<Executable> createTestCases() {
86 List<Executable> testCases = new ArrayList<>();
87
88 Class<?> aClass = DummyClass.class;
89 testCases.addAll(Arrays.asList(aClass.getDeclaredMethods()));
90 testCases.addAll(Arrays.asList(aClass.getDeclaredConstructors()));
91 return testCases;
92 }
93 }
|