70 import static org.graalvm.compiler.bytecode.Bytecodes.LOOKUPSWITCH;
71 import static org.graalvm.compiler.bytecode.Bytecodes.LSTORE;
72 import static org.graalvm.compiler.bytecode.Bytecodes.MULTIANEWARRAY;
73 import static org.graalvm.compiler.bytecode.Bytecodes.NEW;
74 import static org.graalvm.compiler.bytecode.Bytecodes.NEWARRAY;
75 import static org.graalvm.compiler.bytecode.Bytecodes.PUTFIELD;
76 import static org.graalvm.compiler.bytecode.Bytecodes.PUTSTATIC;
77 import static org.graalvm.compiler.bytecode.Bytecodes.RET;
78 import static org.graalvm.compiler.bytecode.Bytecodes.SIPUSH;
79 import static org.graalvm.compiler.bytecode.Bytecodes.TABLESWITCH;
80
81 import java.io.File;
82 import java.io.IOException;
83 import java.lang.reflect.Executable;
84 import java.lang.reflect.Method;
85 import java.util.Enumeration;
86 import java.util.Formatter;
87 import java.util.zip.ZipEntry;
88 import java.util.zip.ZipFile;
89
90 import org.junit.Assert;
91 import org.junit.Assume;
92 import org.junit.Test;
93
94 import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
95 import org.graalvm.compiler.api.test.Graal;
96 import org.graalvm.compiler.bytecode.Bytecode;
97 import org.graalvm.compiler.bytecode.BytecodeDisassembler;
98 import org.graalvm.compiler.bytecode.BytecodeLookupSwitch;
99 import org.graalvm.compiler.bytecode.BytecodeStream;
100 import org.graalvm.compiler.bytecode.BytecodeSwitch;
101 import org.graalvm.compiler.bytecode.BytecodeTableSwitch;
102 import org.graalvm.compiler.bytecode.Bytecodes;
103 import org.graalvm.compiler.bytecode.ResolvedJavaMethodBytecode;
104 import org.graalvm.compiler.core.test.GraalCompilerTest;
105 import org.graalvm.compiler.phases.VerifyPhase;
106 import org.graalvm.compiler.phases.util.Providers;
107 import org.graalvm.compiler.replacements.classfile.ClassfileBytecode;
108 import org.graalvm.compiler.replacements.classfile.ClassfileBytecodeProvider;
109 import org.graalvm.compiler.runtime.RuntimeProvider;
110
111 import jdk.vm.ci.meta.ConstantPool;
112 import jdk.vm.ci.meta.JavaField;
113 import jdk.vm.ci.meta.JavaMethodProfile.ProfiledMethod;
114 import jdk.vm.ci.meta.JavaType;
115 import jdk.vm.ci.meta.MetaAccessProvider;
116 import jdk.vm.ci.meta.ResolvedJavaField;
117 import jdk.vm.ci.meta.ResolvedJavaMethod;
118 import jdk.vm.ci.meta.ResolvedJavaType;
119
120 /**
121 * Tests that bytecode exposed via {@link ClassfileBytecode} objects is the same as the bytecode
122 * (modulo minor differences in constant pool resolution) obtained directly from
123 * {@link ResolvedJavaMethod} objects.
124 */
125 public class ClassfileBytecodeProviderTest extends GraalCompilerTest {
126
127 private static boolean shouldProcess(String classpathEntry) {
128 if (classpathEntry.endsWith(".jar")) {
129 String name = new File(classpathEntry).getName();
130 return name.contains("jvmci") || name.contains("graal");
131 }
132 return false;
133 }
134
135 @Test
136 public void test() {
137 RuntimeProvider rt = Graal.getRequiredCapability(RuntimeProvider.class);
138 Providers providers = rt.getHostBackend().getProviders();
139 MetaAccessProvider metaAccess = providers.getMetaAccess();
140
141 Assume.assumeTrue(VerifyPhase.class.desiredAssertionStatus());
142
143 String propertyName = Java8OrEarlier ? "sun.boot.class.path" : "jdk.module.path";
144 String bootclasspath = System.getProperty(propertyName);
145 Assert.assertNotNull("Cannot find value of " + propertyName, bootclasspath);
|
70 import static org.graalvm.compiler.bytecode.Bytecodes.LOOKUPSWITCH;
71 import static org.graalvm.compiler.bytecode.Bytecodes.LSTORE;
72 import static org.graalvm.compiler.bytecode.Bytecodes.MULTIANEWARRAY;
73 import static org.graalvm.compiler.bytecode.Bytecodes.NEW;
74 import static org.graalvm.compiler.bytecode.Bytecodes.NEWARRAY;
75 import static org.graalvm.compiler.bytecode.Bytecodes.PUTFIELD;
76 import static org.graalvm.compiler.bytecode.Bytecodes.PUTSTATIC;
77 import static org.graalvm.compiler.bytecode.Bytecodes.RET;
78 import static org.graalvm.compiler.bytecode.Bytecodes.SIPUSH;
79 import static org.graalvm.compiler.bytecode.Bytecodes.TABLESWITCH;
80
81 import java.io.File;
82 import java.io.IOException;
83 import java.lang.reflect.Executable;
84 import java.lang.reflect.Method;
85 import java.util.Enumeration;
86 import java.util.Formatter;
87 import java.util.zip.ZipEntry;
88 import java.util.zip.ZipFile;
89
90 import org.graalvm.compiler.test.SubprocessUtil;
91 import org.junit.Assert;
92 import org.junit.Assume;
93 import org.junit.Before;
94 import org.junit.Test;
95
96 import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
97 import org.graalvm.compiler.api.test.Graal;
98 import org.graalvm.compiler.bytecode.Bytecode;
99 import org.graalvm.compiler.bytecode.BytecodeDisassembler;
100 import org.graalvm.compiler.bytecode.BytecodeLookupSwitch;
101 import org.graalvm.compiler.bytecode.BytecodeStream;
102 import org.graalvm.compiler.bytecode.BytecodeSwitch;
103 import org.graalvm.compiler.bytecode.BytecodeTableSwitch;
104 import org.graalvm.compiler.bytecode.Bytecodes;
105 import org.graalvm.compiler.bytecode.ResolvedJavaMethodBytecode;
106 import org.graalvm.compiler.core.test.GraalCompilerTest;
107 import org.graalvm.compiler.phases.VerifyPhase;
108 import org.graalvm.compiler.phases.util.Providers;
109 import org.graalvm.compiler.replacements.classfile.ClassfileBytecode;
110 import org.graalvm.compiler.replacements.classfile.ClassfileBytecodeProvider;
111 import org.graalvm.compiler.runtime.RuntimeProvider;
112
113 import jdk.vm.ci.meta.ConstantPool;
114 import jdk.vm.ci.meta.JavaField;
115 import jdk.vm.ci.meta.JavaMethodProfile.ProfiledMethod;
116 import jdk.vm.ci.meta.JavaType;
117 import jdk.vm.ci.meta.MetaAccessProvider;
118 import jdk.vm.ci.meta.ResolvedJavaField;
119 import jdk.vm.ci.meta.ResolvedJavaMethod;
120 import jdk.vm.ci.meta.ResolvedJavaType;
121
122 /**
123 * Tests that bytecode exposed via {@link ClassfileBytecode} objects is the same as the bytecode
124 * (modulo minor differences in constant pool resolution) obtained directly from
125 * {@link ResolvedJavaMethod} objects.
126 */
127 public class ClassfileBytecodeProviderTest extends GraalCompilerTest {
128
129 @Before
130 public void checkJavaAgent() {
131 assumeManagementLibraryIsLoadable();
132 Assume.assumeFalse("Java Agent found -> skipping", SubprocessUtil.isJavaAgentAttached());
133 }
134
135 private static boolean shouldProcess(String classpathEntry) {
136 if (classpathEntry.endsWith(".jar")) {
137 String name = new File(classpathEntry).getName();
138 return name.contains("jvmci") || name.contains("graal");
139 }
140 return false;
141 }
142
143 @Test
144 public void test() {
145 RuntimeProvider rt = Graal.getRequiredCapability(RuntimeProvider.class);
146 Providers providers = rt.getHostBackend().getProviders();
147 MetaAccessProvider metaAccess = providers.getMetaAccess();
148
149 Assume.assumeTrue(VerifyPhase.class.desiredAssertionStatus());
150
151 String propertyName = Java8OrEarlier ? "sun.boot.class.path" : "jdk.module.path";
152 String bootclasspath = System.getProperty(propertyName);
153 Assert.assertNotNull("Cannot find value of " + propertyName, bootclasspath);
|