[15] RFR: 8242895: failed: sanity at src/hotspot/share/opto/escape.cpp:2361

Jamsheed C M jamsheed.c.m at oracle.com
Mon Jul 13 05:44:02 UTC 2020


Hi,

I reworked the fix. I compute offset for all init captures stores, but 
treats this special init captured stores similar to unsafe(as these 
objects are usually GlobalEscape and doesn't have any perf implications).

revised webrev: http://cr.openjdk.java.net/~jcm/8242895/webrev_fix_EA.01/

testing: mach1-5( logs in jbs)

Best regards,

Jamsheed

On 09/07/2020 19:36, Jamsheed C M wrote:
>
> Hi,
>
> request to hold the review. need to change the code for dealing with 
> unsafe access. as current capture code go for more execution time 
> analyzing things.
>
> Best regards,
>
> Jamsheed
>
> On 09/07/2020 13:01, Jamsheed C M wrote:
>>
>> Hi all,
>>
>> JBS:https://bugs.openjdk.java.net/browse/JDK-8242895
>>
>> Request for review changes made to offset computation and field write 
>> detection for init captured stores due to phis addition between alloc 
>> and init. This happen if init node in different outer loop wrt to 
>> alloc node and there is a loop opt.  This was required as a result of 
>> enhancement [1].
>>
>> Normally init are not associated with multiple alloc node during EA 
>> phase, but changes done for [1] caused the code shapes of the form 
>> [2]  to generate inits associated with multiple alloc node.
>>
>> This had implication in offset computation and field write detection 
>> related to initializing stores.
>>
>> Attempt to fix in EA:
>>
>>      webrev: http://cr.openjdk.java.net/~jcm/8242895/webrev_fix_EA/
>>
>> Alternate fix:
>>
>>      Minimize the scenario in compiler generated code by throwing 
>> only j.l.Error from slowpath(all exception async/sync are handled in 
>> runtime exit).
>>
>>      Stub epilog doesn't poll or throw any exceptions. Disable full 
>> loop opt before EA for detectable patterns and bailout EA for late 
>> detected patterns.
>>
>>      webrev: http://cr.openjdk.java.net/~jcm/8242895/webrev_deopt/
>>
>> Please advice.
>>
>> Testing : mach tier1-5 (logs in jbs)
>>
>> Best regards,
>>
>> Jamsheed
>>
>>
>> [1] JDK-8231291 <https://bugs.openjdk.java.net/browse/JDK-8231291>C2: 
>> loop opts before EA should maximally unroll loops
>>
>> [2] that have its init node in different outer loop wrt to alloc node.
>>
>>
>> loop begin
>>
>>    try{
>>
>>    return new obj()/  throw new obj()/ uncommon trap after 
>> allocation, in a loop
>>
>>    } catch(ex) {
>>
>>    }
>>
>> loop end
>>
>>   42     public static IntA test(int n) {
>>    43         for (int i=0; i<2; i++) {
>>    44             try {
>>    45                   return new IntA(n + i);
>>    46             } catch (Exception e) {
>>    47             }
>>    48         }
>>    49
>>


More information about the hotspot-compiler-dev mailing list