Test.java revision 6740:c3388a74a6fb
1import java.lang.reflect.*; 2 3public class Test { 4 5 public boolean m1(A a, Boolean early_return) { 6 if (early_return.booleanValue()) return true; 7 boolean res = m2(a); 8 return res; 9 } 10 11 public boolean m2(A a) { 12 boolean res = false; 13 if (a.getClass() == B.class) { 14 a.m(); 15 } else { 16 res = true; 17 } 18 return res; 19 } 20 21 public void m3(ClassLoader loader) throws Exception { 22 Class Test_class = loader.loadClass("Test"); 23 Object test = Test_class.newInstance(); 24 Class A_class = loader.loadClass("A"); 25 Object a = A_class.newInstance(); 26 Class B_class = loader.loadClass("B"); 27 Object b = B_class.newInstance(); 28 Method m1 = Test_class.getMethod("m1", A_class, Boolean.class); 29 30 // So we don't hit uncommon trap in the next loop 31 for (int i = 0; i < 4000; i++) { 32 m4(m1, test, a, Boolean.TRUE); 33 m4(m1, test, b, Boolean.TRUE); 34 } 35 for (int i = 0; i < 20000; i++) { 36 m4(m1, test, a, Boolean.FALSE); 37 } 38 for (int i = 0; i < 4; i++) { 39 m4(m1, test, b, Boolean.FALSE); 40 } 41 } 42 43 public Object m4(Method m, Object test, Object a, Object early_return) throws Exception { 44 return m.invoke(test, a, early_return); 45 } 46 47 static public A a = new A(); 48 static public B b = new B(); 49} 50 51