jdk-24/test/hotspot/jtreg/compiler/profiling/spectrapredefineclass_classloaders/Test.java
2017-09-12 19:03:39 +02:00

54 lines
1.6 KiB
Java

package compiler.profiling.spectrapredefineclass_classloaders;
import java.lang.reflect.Method;
public class Test {
public boolean m1(A a, Boolean early_return) {
if (early_return.booleanValue()) return true;
boolean res = m2(a);
return res;
}
public boolean m2(A a) {
boolean res = false;
if (a.getClass() == B.class) {
a.m();
} else {
res = true;
}
return res;
}
public void m3(ClassLoader loader) throws Exception {
String packageName = Test.class.getPackage().getName();
Class Test_class = loader.loadClass(packageName + ".Test");
Object test = Test_class.newInstance();
Class A_class = loader.loadClass(packageName + ".A");
Object a = A_class.newInstance();
Class B_class = loader.loadClass(packageName + ".B");
Object b = B_class.newInstance();
Method m1 = Test_class.getMethod("m1", A_class, Boolean.class);
// So we don't hit uncommon trap in the next loop
for (int i = 0; i < 4000; i++) {
m4(m1, test, a, Boolean.TRUE);
m4(m1, test, b, Boolean.TRUE);
}
for (int i = 0; i < 20000; i++) {
m4(m1, test, a, Boolean.FALSE);
}
for (int i = 0; i < 4; i++) {
m4(m1, test, b, Boolean.FALSE);
}
}
public Object m4(Method m, Object test, Object a, Object early_return) throws Exception {
return m.invoke(test, a, early_return);
}
static public A a = new A();
static public B b = new B();
}