src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/ConstantPoolSubstitutionsTests.java
changeset 58533 46b0b7fe255c
parent 58299 6df94ce3ab2f
child 58679 9c3209ff7550
child 58877 aec7bf35d6f5
equal deleted inserted replaced
58532:b4f2e13d20ea 58533:46b0b7fe255c
    23 
    23 
    24 
    24 
    25 
    25 
    26 package org.graalvm.compiler.hotspot.test;
    26 package org.graalvm.compiler.hotspot.test;
    27 
    27 
    28 import static org.graalvm.compiler.serviceprovider.JavaVersionUtil.JAVA_SPEC;
       
    29 
       
    30 import java.lang.reflect.Method;
    28 import java.lang.reflect.Method;
    31 
    29 
    32 import org.graalvm.compiler.core.test.GraalCompilerTest;
    30 import org.graalvm.compiler.core.test.GraalCompilerTest;
    33 import org.graalvm.compiler.debug.DebugContext;
    31 import org.graalvm.compiler.debug.DebugContext;
    34 import org.graalvm.compiler.graph.Node;
    32 import org.graalvm.compiler.graph.Node;
    73             }
    71             }
    74         }
    72         }
    75         return graph;
    73         return graph;
    76     }
    74     }
    77 
    75 
       
    76     private static String getMiscPackage() {
       
    77         if (JavaVersionUtil.JAVA_SPEC <= 8) {
       
    78             return "sun.misc";
       
    79         }
       
    80         try {
       
    81             String miscPackage = "jdk.internal.access";
       
    82             Class.forName(miscPackage + ".SharedSecrets");
       
    83             return miscPackage;
       
    84         } catch (ClassNotFoundException e) {
       
    85             try {
       
    86                 String miscPackage = "jdk.internal.misc";
       
    87                 Class.forName(miscPackage + ".SharedSecrets");
       
    88                 return miscPackage;
       
    89             } catch (ClassNotFoundException ex) {
       
    90             }
       
    91             throw new AssertionError(e);
       
    92         }
       
    93     }
       
    94 
    78     private static Object getConstantPoolForObject() {
    95     private static Object getConstantPoolForObject() {
    79         String miscPackage = JavaVersionUtil.JAVA_SPEC <= 8 ? "sun.misc"
    96         String miscPackage = getMiscPackage();
    80                         : (JavaVersionUtil.JAVA_SPEC <= 11 ? "jdk.internal.misc" : "jdk.internal.access");
       
    81         try {
    97         try {
    82             Class<?> sharedSecretsClass = Class.forName(miscPackage + ".SharedSecrets");
    98             Class<?> sharedSecretsClass = Class.forName(miscPackage + ".SharedSecrets");
    83             Class<?> javaLangAccessClass = Class.forName(miscPackage + ".JavaLangAccess");
    99             Class<?> javaLangAccessClass = Class.forName(miscPackage + ".JavaLangAccess");
    84             Object jla = sharedSecretsClass.getDeclaredMethod("getJavaLangAccess").invoke(null);
   100             Object jla = sharedSecretsClass.getDeclaredMethod("getJavaLangAccess").invoke(null);
    85             return javaLangAccessClass.getDeclaredMethod("getConstantPool", Class.class).invoke(jla, Object.class);
   101             return javaLangAccessClass.getDeclaredMethod("getConstantPool", Class.class).invoke(jla, Object.class);
   110 
   126 
   111     /**
   127     /**
   112      * This test uses some non-public API.
   128      * This test uses some non-public API.
   113      */
   129      */
   114     private static void addExports(Class<?> c) {
   130     private static void addExports(Class<?> c) {
   115         String packageName = JAVA_SPEC <= 11 ? "jdk.internal.misc" : "jdk.internal.access";
   131         ModuleSupport.exportPackageTo(String.class, getMiscPackage(), c);
   116         ModuleSupport.exportPackageTo(String.class, packageName, c);
       
   117         ModuleSupport.exportPackageTo(String.class, "jdk.internal.reflect", c);
   132         ModuleSupport.exportPackageTo(String.class, "jdk.internal.reflect", c);
   118     }
   133     }
   119 
   134 
   120     @Test
   135     @Test
   121     public void testGetSize() {
   136     public void testGetSize() {