RFR: 8270459: Conflict inlining decisions by C1/C2 with the same CompileCommand [v2]
Xin Liu
xliu at openjdk.java.net
Fri Jul 16 04:50:16 UTC 2021
On Fri, 16 Jul 2021 04:06:12 GMT, Jie Fu <jiefu at openjdk.org> wrote:
>> Maybe like this. it can cover 2 cases.
>>
>> index 8464d22ef42..15e1f474227 100644
>> --- a/src/hotspot/share/compiler/compilerOracle.cpp
>> +++ b/src/hotspot/share/compiler/compilerOracle.cpp
>> @@ -348,7 +348,7 @@ static bool resolve_inlining_predicate(enum CompileCommand option, const methodH
>> bool has_inline = CompilerOracle::has_option_value(method, CompileCommand::Inline, v1);
>> bool has_dnotinline = CompilerOracle::has_option_value(method, CompileCommand::DontInline, v2);
>> if (has_inline && has_dnotinline) {
>> - if (v1 && v2) {
>> + if (v1 == v2) {
>> // Conflict options detected
>> // Find the last one for that method and return the predicate accordingly
>> // option_list lists options in reverse order. So the first option we find is the last which was specified.
>> @@ -358,7 +358,7 @@ static bool resolve_inlining_predicate(enum CompileCommand option, const methodH
>> last_one = current->option();
>> if (last_one == CompileCommand::Inline || last_one == CompileCommand::DontInline) {
>> if (current->matches(method)) {
>> - return last_one == option;
>> + return last_one == option ? v1 : !v1;
>> }
>> }
>> current = current->next();
>
>> if has_inline == true && has_dnotinline == true, but v1 == false && v2 == false, two options conflict, don't they?
>
> I don't think they are conflict.
>
> This is because
>
> -XX:CompilerCommand=inline,foo,false ==> doesn't mean to disallow the inline of foo
> -XX:CompilerCommand=dontinline,foo,false ==> doesn't mean to force inline of foo
>
>
> So if `inline` and `dontinline` options are set to false, they actually have no effect to the compiler.
> Thanks.
make sense. I take back my comment. those 2 options don't have any effect when they are false.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4780
More information about the hotspot-compiler-dev
mailing list