test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/TestHotSpotJVMCIRuntime.java
changeset 58974 2b0f2fe82735
parent 54732 2d012a75d35c
equal deleted inserted replaced
58973:291775bcf35d 58974:2b0f2fe82735
    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 }