/* Reproduce: ${JDK-fastdebug}/bin/java \ -XX:-TieredCompilation \ -XX:-UseOnStackReplacement \ -XX:+PrintCompilation \ -XX:MaxTrivialSize=1 \ CounterOverflow */ public class CounterOverflow { public static void main(String[] args) { int sum = 0; for (int i = 0; i < 10; i++) { sum += test(i); } System.out.println("sum = " + sum); } public static int test(int i) { CounterOverflow a = new CounterOverflow(); int sum = 0; while (true) { sum += a.call(i+1); if (sum < 0) { sum = 0; break; } } for (int j = 0; j < 500000; j++) { sum += a.call(j); } return sum; } public int call(int i) { return i; } }