RFR: 8131362: aarch64: C2 does not handle large stack offsets

Andrew Haley aph at redhat.com
Fri Jul 17 09:29:25 UTC 2015


On 17/07/15 10:12, Edward Nevill wrote:
> On Fri, 2015-07-17 at 10:01 +0100, Andrew Haley wrote:
>> On 17/07/15 09:52, Edward Nevill wrote:
>>>>> Should it be +8 instead of +4? Or these offsets are not in bytes?:
>>>>>
>>>>> +      unspill(rscratch1, true, src_offset);
>>>>> +      spill(rscratch1, true, dst_offset);
>>>>> +      unspill(rscratch1, true, src_offset+4);
>>>>> +      spill(rscratch1, true, dst_offset+4);
>>> Ouch! Good catch.
>>>
>>> New webrev.
>>>
>>> http://cr.openjdk.java.net/~enevill/8131362/webrev.03/
>>
>> I'm a bit more concerned that this did not fail in testing.  I guess
>> there were no tests at all for stack-stack spills.
> 
> Correct. And it would have to be a 128 bit vector stack-stack spill with
> an offset >= 512. How would you even provoke such a thing.

With a highly-vectorizable test case with a zillion temporaries, I guess.
But I don't know why HotSpot would ever do stack-stack spills.  The very
idea of stack-stack spilling makes no sense to me.

Andrew.



More information about the hotspot-compiler-dev mailing list