RFR(S): 8228839: Non-CFG nodes have control edges to calls, instead of the call's control projection
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Aug 21 20:11:12 UTC 2019
Thank you for explaining, Nils
I am okay with this temporary workaround then. Please, file bug to fix main issue.
Thanks,
Vladimir
On 8/21/19 12:56 PM, Nils Eliasson wrote:
> Hi Vladimir,
>
> I want the workaround in promtly because the issue causes noise in the bigapps testing which is
> really annoying, and might be hiding other problems.
>
> The core issue - the PhaseIdealLoop::get_ctrl problem, might turn up quite large. Many types of
> MultiNodes, like calls and Membars are at times set incorrectly (often in loopopts). SafepointNodes
> are a direct subclass of MultiNodes but doesn't seem to use a control projection anywhere. (But
> calls that are a subclass of SafepointNodes expect it - very confusing).
>
> It is also quite common that the node retrieved from a PhaseIdealLoop::get_ctrl(..) is set as
> control in another node, which propagates the problem.
>
> I have tried to sanitize the ctrl-mapping by intercepting all MultiNodes (except SafePointNodes and
> StartNodes) in PhaseIdealLoop::set_ctrl(). That seems to solve all downstream issues (without
> causing new problems). But for a permanent fix I need to go through all the call sites of set_ctrl()
> and find out why they don't use the projection.
>
> I also need to investigate why SafepointNodes don't use control projections, and what it would take
> to fix it.
>
> Regards,
>
> Nils
>
>
> On 2019-08-21 17:36, Vladimir Kozlov wrote:
>> Hi Nils,
>>
>> Did you find in which cases the control edge is set to Call node directly?
>>
>> Since the fix for JDK 14 we have time to fix it correctly instead of workaround.
>>
>> Thanks,
>> Vladimir
>>
>> On 8/21/19 3:30 AM, Nils Eliasson wrote:
>>> Hi,
>>>
>>> This is a workaround for the problem that sometimes non-CFG nodes have their ctrl
>>> (PhaseIdealLoop::get_ctrl(n)) set directly to calls, instead of the call's control projection.
>>> I'm working on a patch for that, but it might end up a bit intrusive. This is a workaround that
>>> simply checks and adjusts for that case.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8228839
>>>
>>> Webrev: http://cr.openjdk.java.net/~neliasso/8228839/webrev.01/
>>>
>>> Please review,
>>>
>>> // Nils
>>>
More information about the hotspot-compiler-dev
mailing list