RFR (S): 8161334: C2: Cast nodes hinder memory alias analysis
vladimir.x.ivanov at oracle.com
Thu Feb 14 22:37:22 UTC 2019
> the comment in memnode.cpp:1056 references 'B' which is not defined.
Added the following clarification:
- // L = LoadQ(AddP(Check/CastPP(B), #Off))
- // S = StoreQ(AddP( B , #Off), V)
+ // B = << base >>
+ // L = LoadQ(AddP(Check/CastPP(B), #Off))
+ // S = StoreQ(AddP( B , #Off), V)
> Otherwise, this looks good to me.
> Best regards,
> On 12.02.19 23:32, Vladimir Ivanov wrote:
>> The following IR is produced for the slow case reported in the bug:
>> B = CastPP (DecodeN ...) // ...$C:NotNull
>> S = StoreI M (AddP ( B) #off) V // ...$C:NotNull
>> L = LoadI S (AddP (CheckCastPP B) #off) // ...$C:NotNull:exact
>> MemNode::can_see_stored_value() can't prove S & L access the same location since AddPs are different
>> (since base nodes differ). There's a special case there, but only when Allocate is a base.
>> Proposed patch generalizes existing Allocate case to the case when both base & offset are known to
>> be the same.
>> Testing: hs-precheckin-comp, tier1-5
>> Best regards,
>> Vladimir Ivanov
More information about the hotspot-compiler-dev