RFR(XS) 8029446: assert(_cfg.get_block_for_node(proj) == borig) failed: incorrect block for kill projections
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Jan 7 10:53:41 PST 2014
Looks good.
Thanks,
Vladimir
On 1/7/14 3:20 AM, Niclas Adlertz wrote:
> Hi Vladimir,
>
> Thank you for looking at this.
>
> http://cr.openjdk.java.net/~adlertz/JDK-8029446/webrev01/
>
> Kind Regards,
> Niclas Adlertz
>
> On 2013-12-21 21:30, Vladimir Kozlov wrote:
>> Niclas,
>>
>> The code should not be platform specific (ppc64 may have the same
>> problem). The code should be conditional on if base has (one or
>> several when node kills flags and regs) projection nodes and to be
>> similar to code in PhaseChaitin::clone_projs() except cloning. You
>> also forgot to add new live range for projection node.
>>
>> Regards,
>> Vladimir
>>
>> On 12/18/13 6:31 AM, Niclas Adlertz wrote:
>>> Hi Chris, thank you for taking a look at this.
>>>
>>>> Why is it AMD64 only?
>>>
>>> From what I can tell by the ad-files;
>>>
>>> src/cpu/sparc/vm/sparc.ad
>>> src/cpu/x86/vm/x86_64.ad
>>> src/cpu/x86/vm/x86_32.ad
>>> src/cpu/x86/vm/x86.ad
>>>
>>> Only x86_64.ad contains something related to kill projections (the
>>> RFLAGS register) for the loadConP0:
>>> instruct loadConP0(rRegP dst, immP0 src, rFlagsReg cr)
>>>
>>> Whereas sparc.ad looks like:
>>> instruct loadConP0(iRegP dst, immP0 src) %{
>>>
>>> and x64.ad and x86_32.ad don't contain any definition of loadConP0.
>>>
>>> When running a method generating a loadConP0, on x64 I see:
>>>
>>> 9 loadConP0 === 1 [[ 10 2 ]] NULL
>>>
>>> 10 MachProj === 9 [[]] #1
>>>
>>>
>>> But on SPARC I only see:
>>>
>>> 9 loadConP0 === 1 [[ 2 ]] NULL
>>>
>>>
>>>
>>> Do you have another opinion on this?
>>>
>>>> Can you please add the investigation to the bug report as well?
>>>>
>>>>
>>> Sure!
>>>
>>> Kind Regards,
>>> Niclas Adlertz
>>>
>>>
>>> On 2013-12-17 19:06, Christian Thalinger wrote:
>>>> Why is it AMD64 only? Can you please add the investigation to the
>>>> bug report as well?
>>>>
>>>> On Dec 17, 2013, at 6:50 AM, Niclas Adlertz
>>>> <niclas.adlertz at oracle.com> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> Problem:
>>>>> In this crash we are trying to re-materialize a loadConP0 node.
>>>>> When cloning it, we also want to clone its kill
>>>>> projection node (if any) and we check that the kill projection node
>>>>> is in the same block as the loadConP0 node. The
>>>>> problem is that the kill projection node is never added to the
>>>>> loadConP0 node's block when it is created so we end up
>>>>> failing the assert.
>>>>>
>>>>> Solution:
>>>>> Add the kill projection node to the same block as the loadConP0
>>>>> node during creation.
>>>>>
>>>>> Kind Regards,
>>>>> Niclas Adlertz
>>>>>
>>>>> BUG: https://bugs.openjdk.java.net/browse/JDK-8029446
>>>>> WEBREV: http://cr.openjdk.java.net/~adlertz/JDK-8029446/webrev00/
>>>>>
>>>
>
More information about the hotspot-compiler-dev
mailing list