RFR(XS) 8029446: assert(_cfg.get_block_for_node(proj) == borig) failed: incorrect block for kill projections
Niclas Adlertz
niclas.adlertz at oracle.com
Wed Jan 8 02:53:06 PST 2014
Thanks.
Kind Regards,
Niclas Adlertz
On 2014-01-07 19:53, Vladimir Kozlov wrote:
> 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