[9] RFR (XS): 8153357: C2 creates incorrect cast after eliminating phi with unique input

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Apr 15 17:27:40 UTC 2016


Looks good to me.

thanks,
Vladimir

On 4/15/16 8:11 AM, Zoltán Majó wrote:
> Hi Vladimir,
>
>
> thank you for the feedback!
>
> On 04/15/2016 02:46 AM, Vladimir Kozlov wrote:
>> I think check should use !isa_oopptr() since one of nodes could be ConP NULL ptr which is not klassptr.
>
> Here is the updated webrev:
> http://cr.openjdk.java.net/~zmajo/8153357/webrev.01/
>
> RBT testing passes. I did ~70 runs with the reproducer, no problems have shown up so far. I'll do ~900 more runs, though.
>
> Thank you!
>
> Best regards,
>
>
> Zoltan
>
>>
>> Thanks,
>> Vladimir
>>
>> On 4/14/16 6:21 AM, Zoltán Majó wrote:
>>> Hi,
>>>
>>>
>>> please review the patch for 8153357.
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8153357
>>>
>>> Problem: When determining the unique input of a phi, the C2 compiler removes cast nodes connecting the phi to its
>>> unique input.
>>> http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/a76d63163758/src/share/vm/opto/cfgnode.cpp#l1181
>>>
>>> Then (if the phi has indeed a unique input), the C2 compiler attempts replace the phi with a cast node. The new cast
>>> node feeds from the unique input.
>>>
>>> To be able to remove the phi node, the C2 compiler must  to determine the type of cast to add in place of the phi
>>> node (CastII, CastPP, or CheckCastPP).
>>> http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/a76d63163758/src/share/vm/opto/cfgnode.cpp#l1705
>>>
>>> The failure in the bug report appears because the C2 compiler adds a cast node of unexpected type to the graph (a
>>> CheckCastPP instead of a CastPP when casting between two klass pointers).
>>>
>>> Please find more details about the cause of the failure in the bug description:
>>> https://bugs.openjdk.java.net/browse/JDK-8153357?focusedCommentId=13927108&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13927108
>>>
>>>
>>>
>>> Solution: Refine C2's logic to determine the type of cast node added.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~zmajo/8153357/webrev.00/
>>>
>>> Testing:
>>> - JPRT;
>>> - all hotspot compiler tests with RBT (-Xmixed, -Xcomp);
>>> - 500 non-failing runs with the reproducer (the problem reproduces with < 100 runs).
>>>
>>> Thank you and best regards,
>>>
>>>
>>> Zoltan
>>>
>


More information about the hotspot-compiler-dev mailing list