RFR(L): 8186027: C2: loop strip mining
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Oct 27 15:50:16 UTC 2017
I ran pre-integration testing with latest webrev.01 and it passed.
But, give me more time to look though changes.
Thanks,
Vladimir
On 10/25/17 7:29 AM, Roland Westrelin wrote:
>
> Hi Vladimir,
>
> Thanks for looking at this.
>
>> Did you consider less intrusive approach by adding branch over
>> SafePoint with masking on index variable?
>>
>> int mask = LoopStripMiningMask * inc; // simplified
>> for (int i = start; i < stop; i += inc) {
>> // body
>> if (i & mask != 0) continue;
>> safepoint;
>> }
>>
>> Or may be doing it inside .ad file in new SafePoint node
>> implementation so that ideal graph is not affected.
>
> We're looking for the best trade off between latency and thoughput: we
> want the safepoint poll overhead to be entirely eliminated even when the
> safepoint doesn't trigger.
>
>> I am concern that suggested changes may affect Range Check elimination
>> (you changed limit to variable value/flag) in addition to complexity
>> of changes which may affect stability of C2.
>
> The CountedLoop that is created with my patch is strictly identical to
> the CountedLoop created today with -UseCountedLoopSafepoints. Bounds are
> not changed at that time. They are left as they are today. The
> difference, with loop strip mining, is that the counted loop has a
> skeleton outer loop. The bounds of the counted loop are adjusted once
> loop opts are over. If the counted loop has a predicate, the predicate
> is moved out of loop just as it is today. The only difference with
> today, is that the predicate should be moved out of the outer loop. If a
> pre and post loop needs to be created, then the only difference with
> today is that the clones need to be moved out of the outer loop and
> logic that locate the pre from the main loop need to account for the
> outer loop.
>
> It's obviously a complex change so if your primary concern is stability
> then loop strip mining can be disabled by default. Assuming strip mining
> off, then that patch is mostly some code refactoring and some logic that
> never triggers.
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list