Relates :
|
After 8007439 changes C2 does not inline cold accessors (field read methods) which C2 should always inline: $ cat Test.java public class Test { int i; int read_field() { return i; } int test(int j) { if ((j & 0xfff) == 0) return read_field(); else return j; } static public void main(String[] args) { Test t = new Test(); for (int i = 0; i < 11000; i++) t.test(i); } } % /java/re/jdk/8/promoted/all/b79/binaries/solaris-i586/fastdebug/bin/java -XX:+PrintInlining -XX:+PrintCompilation -XX:CICompilerCount=1 -Xbatch Test 629 1 b Test::test (15 bytes) @ 9 Test::read_field (5 bytes) inline (hot) % /java/re/jdk/8/promoted/all/b80/binaries/solaris-i586/fastdebug/bin/java -XX:+PrintInlining -XX:+PrintCompilation -XX:CICompilerCount=1 -Xbatch Test 572 1 b Test::test (15 bytes) @ 9 Test::read_field (5 bytes) too cold to inline