package java.lang.invoke; import java.lang.reflect.InvocationTargetException; public class TestStable { static final boolean isStableEnabled = StableConfiguration.isStableEnabled; static final boolean isServerWithStable = StableConfiguration.isServerWithStable; public final int fi; public static StableA sa; public static void main(String[] args){ // resolve everything before foo StableA tmp = new StableA(); StableA tmp1 = new StableA(0); TestStable ts = new TestStable(9); sa = null; for (int i = 0; i < 0xffffff; i++) { foo(i); } } // different Stable and Final fiels combination test TestStable(int i) { if (sa == null) { //(new StableA()).v = i*i; sa = (new StableA()); sa.v=i*i; } //(new StableB()).v = i+2; this.fi = i; } static TestStable foo(int i) { return new TestStable(i); } } class StableA{ public @Stable int v; public @Stable int v1; StableA() {} StableA(int i) { v = i; v1= i*i; } } class StableB{ public @Stable int v; }