resend: Request for reviews (S): 7146442: assert(false) failed: bad AD file
Tom Rodriguez
tom.rodriguez at oracle.com
Tue Feb 21 11:19:14 PST 2012
On Feb 21, 2012, at 11:15 AM, Vladimir Kozlov wrote:
> Tom Rodriguez wrote:
>> On Feb 21, 2012, at 10:30 AM, Vladimir Kozlov wrote:
>>> Tom Rodriguez wrote:
>>>> On Feb 21, 2012, at 5:35 AM, Vladimir Kozlov wrote:
>>>>> http://cr.openjdk.java.net/~kvn/7146442/webrev
>>>>>
>>>>> 7146442: assert(false) failed: bad AD file
>>>>>
>>>>> EA code in find_init_values() is incorrect. It does not check for related loads
>>>>> which could load NULL value from just allocated object before stores. As result
>>>>> compare pointers (vs NULL) optimization could be incorrect.
>>>> So this created a bad graph that resulted in top showing up?
>>> Yes. CmpPtr optimization incorrectly removed null check of the load from field. Later memory optimization (can_see_stored_value()) replaced load with NULL. As result we got CastPP(NULL)#NotNULL which produced Top. And due to missing check in CastP2X::value() we got CastP2X(Top) in matcher.
>> If it has been there, then what would have happened? Generic bad graph failure?
>
> Yes, bad graph. But I more concern about cases where the load is not replaced with NULL but the check was incorrectly removed. In such cases we have correct graph but compiled code will crash and there will be no implicit null check entry for it.
Ok. The fix looked fine but I just wanted to make sure I understood it. Thanks!
tom
>
> Vladimir
>
>> tom
>>> Thanks,
>>> Vladimir
>>>
>>>>> Take into account only stores captured by Initialize node.
>>>>>
>>>>> Also added missing check for Top input in value() methods for CastP2X and
>>>>> CastX2P nodes.
>>>> Ok.
>>>> tom
>>>>> Thanks,
>>>>> Vladimir
More information about the hotspot-compiler-dev
mailing list