[15] RFR: 8242895: failed: sanity at src/hotspot/share/opto/escape.cpp:2361
Jamsheed C M
jamsheed.c.m at oracle.com
Tue Jul 14 08:28:33 UTC 2020
Hi all,
I had incorrectly added extra check in assert after offset computation
in address_offset . For addps with non constant offsets (like [1])
Not changing the old assert even though I am not expecting first
addp/second addp(for array addressing) case for init captured store.
http://cr.openjdk.java.net/~jcm/8242895/webrev_fix_EA_asserts_corrected/
Best regards,
Jamsheed
[1]
assert(offs != Type::OffsetBot ||
- adr->in(AddPNode::Address)->in(0)->is_AllocateArray(),
+ adr->in(AddPNode::Address)->in(0)->is_AllocateArray() ||
is_captured_store(adr),
"offset must be a constant or it is initialization of array");
On 13/07/2020 11:14, Jamsheed C M wrote:
>
> 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