1 /* |
1 /* |
2 * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
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.test.JLModule.uncheckedAddExports; |
28 import static org.graalvm.compiler.serviceprovider.JavaVersionUtil.JAVA_SPEC; |
29 |
29 |
30 import java.lang.reflect.Method; |
30 import java.lang.reflect.Method; |
31 |
31 |
32 import org.graalvm.compiler.core.test.GraalCompilerTest; |
32 import org.graalvm.compiler.core.test.GraalCompilerTest; |
33 import org.graalvm.compiler.debug.DebugContext; |
33 import org.graalvm.compiler.debug.DebugContext; |
34 import org.graalvm.compiler.graph.Node; |
34 import org.graalvm.compiler.graph.Node; |
35 import org.graalvm.compiler.nodes.Invoke; |
35 import org.graalvm.compiler.nodes.Invoke; |
36 import org.graalvm.compiler.nodes.StructuredGraph; |
36 import org.graalvm.compiler.nodes.StructuredGraph; |
37 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; |
37 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; |
38 import org.graalvm.compiler.serviceprovider.JavaVersionUtil; |
38 import org.graalvm.compiler.serviceprovider.JavaVersionUtil; |
39 import org.graalvm.compiler.test.JLModule; |
39 import org.graalvm.compiler.test.ModuleSupport; |
40 import org.junit.BeforeClass; |
40 import org.junit.BeforeClass; |
41 import org.junit.Test; |
41 import org.junit.Test; |
42 import org.objectweb.asm.ClassWriter; |
42 import org.objectweb.asm.ClassWriter; |
43 import org.objectweb.asm.MethodVisitor; |
43 import org.objectweb.asm.MethodVisitor; |
44 import org.objectweb.asm.Opcodes; |
44 import org.objectweb.asm.Opcodes; |
107 public static void beforeClass() { |
107 public static void beforeClass() { |
108 addExports(AsmLoader.class); |
108 addExports(AsmLoader.class); |
109 } |
109 } |
110 |
110 |
111 /** |
111 /** |
112 * This test uses some API hidden by the JDK9 module system. |
112 * This test uses some non-public API. |
113 */ |
113 */ |
114 private static void addExports(Class<?> c) { |
114 private static void addExports(Class<?> c) { |
115 if (JavaVersionUtil.JAVA_SPEC > 8) { |
115 String packageName = JAVA_SPEC <= 11 ? "jdk.internal.misc" : "jdk.internal.access"; |
116 Object javaBaseModule = JLModule.fromClass(String.class); |
116 ModuleSupport.exportPackageTo(String.class, packageName, c); |
117 Object cModule = JLModule.fromClass(c); |
117 ModuleSupport.exportPackageTo(String.class, "jdk.internal.reflect", c); |
118 uncheckedAddExports(javaBaseModule, "jdk.internal.reflect", cModule); |
|
119 if (JavaVersionUtil.JAVA_SPEC <= 11) { |
|
120 uncheckedAddExports(javaBaseModule, "jdk.internal.misc", cModule); |
|
121 } else { |
|
122 uncheckedAddExports(javaBaseModule, "jdk.internal.access", cModule); |
|
123 } |
|
124 } |
|
125 } |
118 } |
126 |
119 |
127 @Test |
120 @Test |
128 public void testGetSize() { |
121 public void testGetSize() { |
129 Object cp = getConstantPoolForObject(); |
122 Object cp = getConstantPoolForObject(); |