inconsistent inlining behavior with CompileOnly

Roland Westrelin rwestrel at redhat.com
Wed Jun 29 13:32:46 UTC 2016


Tobias,

Thanks for looking at this. Here is the bug:

https://bugs.openjdk.java.net/browse/JDK-8160548

> This inlines a lot although only Thread::exit should be compiled:
>    3046   24    b  3       java.lang.Thread::exit (51 bytes)
>                !m             @ 12   java.lang.ThreadGroup::threadTerminated (63 bytes)
>                !m               @ 6   java.lang.ThreadGroup::remove (94 bytes)
>                                   @ 59   java.lang.System::arraycopy (0 bytes)   intrinsic
>                                 @ 17   java.lang.Object::notifyAll (0 bytes)   native method
>                !m               @ 49   java.lang.ThreadGroup::destroy (138 bytes)
>                                   @ 5   java.lang.ThreadGroup::checkAccess (14 bytes)
>                                     @ 0   java.lang.System::getSecurityManager (4 bytes)   not compilable (disabled)
> 
> [...]


Is the historical behavior (that excluding some methods from compilation
also forbids inlining of those methods) still the expected behavior?
FWIW, I really don't like it. It usually gets in the way for typical use
cases: I want to only compile a set of methods because I want to focus
on them but I still want them to be compiled like they would be without
any CompileCommand arguments.

Roland.


More information about the hotspot-compiler-dev mailing list