[10] RFR(S): 8188785: CCP sets invalid type for java mirror load
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Oct 24 16:43:13 UTC 2017
On 10/24/17 12:33 AM, Tobias Hartmann wrote:
> Hi Vladimir,
>
> On 23.10.2017 18:19, Vladimir Kozlov wrote:
>> I think we need to file a bug or rfe to fix other cases too.
>
> Okay, it's difficult to file a bug for a not yet known issue so I've filed an RFE to look into this:
> https://bugs.openjdk.java.net/browse/JDK-8189856
Good. RFE is fine.
>
>> In add_users_to_worklist() you don't need to check type ut !=
>> > type(u) - just push node on worklist.
>
> Right, fixed:
> http://cr.openjdk.java.net/~thartmann/8188785/webrev.02/
Okay, you are right, lets use this version for the fix. We can do additional changes for 8189856.
Thanks,
Vladimir
>
>> Also can you remove ut->isa_instptr() check in *both* cases. And use u->is_Mem() instead of u->Opcode() == Op_LoadP to
>> cover stores too.
>> The motivation is that original LoadP is raw as result memory operations which use it may look for more precise type
>> of the field somewhere so they should be on worklist.
>
> Why is that necessary? If the raw LoadP changes its type, all direct users will be added to the worklist anyway.
>
> The problem in the failing case is that the type of the AddP changed but the type of the raw LoadP didn't (it stays
> raw). However, the InstPtr load depends on the type of the AddP:
>
> InstPtrLoadP(RawLoadP(AddP(..)))
>
> Do you expect other memory users of the raw LoadP to depend on the type of the AddP? I think we should only add handling
> for known special cases but here's the corresponding webrev:
> http://cr.openjdk.java.net/~thartmann/8188785/webrev.03/
>
> Thanks,
> Tobias
More information about the hotspot-compiler-dev
mailing list