RFR(XS): 8160548: Inconsistent inlining behavior with CompileOnly
Tobias Hartmann
tobias.hartmann at oracle.com
Fri Nov 10 13:43:39 UTC 2017
Hi Nils,
this looks reasonable to me.
Best regards,
Tobias
On 10.11.2017 13:57, Nils Eliasson wrote:
> Hi,
>
> This patch fixes a problem with inconsistent inlining behavior when using CompileCommand compileonly flag.
>
> InlineTree::check_can_parse(ciMethod* callee) checks the callee->can_be_compiled(), which is a wrapper of ciMethod
> _is_c1_compilable/_is_c2_compilable boolean fields. Those fields are set 1) by Compilecommands that prohibit compilation
> (compileonly and exclude) at first compilation, or 2) by a compiler when a method is failing compilation.
>
> Because of this, a method may be inlinable before it is has been compiled itself, but not after. This can cause
> unexpected problems in test that rely on compilecommands for inlining and compilation decisions.
>
> But... there are two sides too this:
>
> 1) It is incorrect since a method may still be inlined even though it shouldn't be compiled.
>
> 2) It is correct, because we don't want to inline methods that failed an earlier compilation.
>
> In this patch I have settled with solving problem description (1) while noting that it may cause some extra compilations
> that bailout because of (2), but will still function correctly.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8160548
>
> Webrev: http://cr.openjdk.java.net/~neliasso/8160548/webrev.01/
>
> Please review,
>
> Nils Eliasson
>
>
More information about the hotspot-compiler-dev
mailing list