File: Test.java

package info (click to toggle)
openjdk-11 11.0.4%2B11-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 757,028 kB
  • sloc: java: 5,016,041; xml: 1,191,974; cpp: 934,731; ansic: 555,697; sh: 24,299; objc: 12,703; python: 3,602; asm: 3,415; makefile: 2,772; awk: 351; sed: 172; perl: 114; jsp: 24; csh: 3
file content (53 lines) | stat: -rw-r--r-- 1,602 bytes parent folder | download | duplicates (20)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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();
}