|
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