RFR: 8333891: Method excluded with directive is not compiled after removal of directive [v2]
Evgeny Astigeevich
eastigeevich at openjdk.org
Mon Jul 1 16:58:20 UTC 2024
On Fri, 28 Jun 2024 15:15:31 GMT, Damon Fenacci <dfenacci at openjdk.org> wrote:
>> Evgeny Astigeevich has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Fix data race
>
> src/hotspot/share/compiler/compileBroker.cpp line 1336:
>
>> 1334: }
>> 1335:
>> 1336: AbstractCompiler *comp = CompileBroker::compiler(comp_level);
>
> Do we need to change this?
Not really. I'll change it back to the original code.
> src/hotspot/share/compiler/compileBroker.cpp line 1563:
>
>> 1561: // See if this compilation is not allowed.
>> 1562: bool CompileBroker::compilation_is_prohibited(const methodHandle& method, int osr_bci, int comp_level) {
>> 1563: assert(compiler(comp_level) != nullptr, "Ensure we have a compiler");
>
> Are you sure `compiler(comp_level)` can never be `nullptr` (not even potentially)? (it seems so to me too but just to make sure)
Yes, I am sure.
This is a private member function which is only used in `CompileBroker::compile_method`.
In `CompileBroker::compile_method` there has always been an assert checking availability of a compiler. I added the assert here just in case the function is used in any other functions where a compiler might not be available.
If we want to minimize changes, we can keep the original code where the parameter `excluded` is only deleted. The checks `comp == nullptr` are redundant in the original code because the function is invoked as follows:
if (comp == nullptr || compilation_is_prohibited(...)) {
return nullptr;
}
I can add a check `comp == nullptr` at the beginning of the function and return `nullptr` if it is true.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19637#discussion_r1661286156
PR Review Comment: https://git.openjdk.org/jdk/pull/19637#discussion_r1661319021
More information about the hotspot-compiler-dev
mailing list