resend: Request for reviews (S): 7146442: assert(false) failed: bad AD file
vladimir.kozlov at oracle.com
Tue Feb 21 11:15:44 PST 2012
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:
>>>> 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.
>>>> Take into account only stores captured by Initialize node.
>>>> Also added missing check for Top input in value() methods for CastP2X and
>>>> CastX2P nodes.
More information about the hotspot-compiler-dev