18 * |
18 * |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 */ |
22 */ |
|
23 |
|
24 /* |
|
25 * @test |
|
26 * @requires vm.jvmci |
|
27 * @modules jdk.internal.vm.ci/jdk.vm.ci.hotspot |
|
28 * jdk.internal.vm.ci/jdk.vm.ci.runtime |
|
29 * jdk.internal.vm.ci/jdk.vm.ci.meta |
|
30 * jdk.internal.vm.ci/jdk.vm.ci.code |
|
31 * jdk.internal.vm.ci/jdk.vm.ci.common |
|
32 * @library /compiler/jvmci/jdk.vm.ci.hotspot.test/src |
|
33 * /compiler/jvmci/jdk.vm.ci.code.test/src |
|
34 * @run testng/othervm |
|
35 * -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-UseJVMCICompiler |
|
36 * jdk.vm.ci.hotspot.test.TestHotSpotJVMCIRuntime |
|
37 */ |
|
38 |
23 package jdk.vm.ci.hotspot.test; |
39 package jdk.vm.ci.hotspot.test; |
24 |
40 |
25 import java.util.ArrayList; |
41 import java.util.ArrayList; |
26 import java.util.Arrays; |
42 import java.util.Arrays; |
27 import java.util.List; |
43 import java.util.List; |
28 import java.util.function.Predicate; |
44 import java.util.function.Predicate; |
29 |
45 |
30 import org.junit.Assert; |
46 import org.testng.Assert; |
31 import org.junit.Test; |
47 import org.testng.annotations.Test; |
32 |
48 |
33 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntime; |
49 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntime; |
34 import jdk.vm.ci.meta.MetaAccessProvider; |
50 import jdk.vm.ci.meta.MetaAccessProvider; |
35 import jdk.vm.ci.meta.ResolvedJavaType; |
51 import jdk.vm.ci.meta.ResolvedJavaType; |
36 |
52 |
72 } |
88 } |
73 } catch (Exception e) { |
89 } catch (Exception e) { |
74 if (expect instanceof Integer) { |
90 if (expect instanceof Integer) { |
75 Assert.fail("expected " + expect + ", got " + e + " for bytes == " + Arrays.toString(bytes)); |
91 Assert.fail("expected " + expect + ", got " + e + " for bytes == " + Arrays.toString(bytes)); |
76 } else { |
92 } else { |
77 Assert.assertTrue(e.toString(), ((Class<?>) expect).isInstance(e)); |
93 Assert.assertTrue(((Class<?>) expect).isInstance(e), e.toString()); |
78 } |
94 } |
79 } |
95 } |
80 } |
96 } |
81 |
97 |
82 @Test |
98 @Test |
96 classes.add(Class.forName("com.sun.crypto.provider.CipherBlockChaining")); |
112 classes.add(Class.forName("com.sun.crypto.provider.CipherBlockChaining")); |
97 } catch (ClassNotFoundException e) { |
113 } catch (ClassNotFoundException e) { |
98 // Extension classes not available |
114 // Extension classes not available |
99 } |
115 } |
100 ClassLoader jvmciLoader = HotSpotJVMCIRuntime.class.getClassLoader(); |
116 ClassLoader jvmciLoader = HotSpotJVMCIRuntime.class.getClassLoader(); |
101 ClassLoader extLoader = getExtensionLoader(); |
117 ClassLoader platformLoader = ClassLoader.getPlatformClassLoader(); |
102 for (Class<?> c : classes) { |
118 for (Class<?> c : classes) { |
103 ClassLoader cl = c.getClassLoader(); |
119 ClassLoader cl = c.getClassLoader(); |
104 boolean expected = cl == null || cl == jvmciLoader || cl == extLoader; |
120 boolean expected = cl == null || cl == jvmciLoader || cl == platformLoader; |
105 boolean actual = predicate.test(metaAccess.lookupJavaType(c)); |
121 boolean actual = predicate.test(metaAccess.lookupJavaType(c)); |
106 Assert.assertEquals(c + ": cl=" + cl, expected, actual); |
122 Assert.assertEquals(expected, actual, c + ": cl=" + cl); |
107 } |
123 } |
108 } |
124 } |
109 |
|
110 private static ClassLoader getExtensionLoader() throws Exception { |
|
111 Object launcher = Class.forName("sun.misc.Launcher").getMethod("getLauncher").invoke(null); |
|
112 ClassLoader appLoader = (ClassLoader) launcher.getClass().getMethod("getClassLoader").invoke(launcher); |
|
113 ClassLoader extLoader = appLoader.getParent(); |
|
114 assert extLoader.getClass().getName().equals("sun.misc.Launcher$ExtClassLoader") : extLoader; |
|
115 return extLoader; |
|
116 } |
|
117 } |
125 } |