[15] RFR (S): 8247502: PhaseStringOpts crashes while optimising effectively dead code

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jul 10 23:19:32 UTC 2020


I agree with this small fix.

Thanks,
Vladimir

On 7/10/20 9:26 AM, Vladimir Ivanov wrote:
> https://bugs.openjdk.java.net/browse/JDK-8247502
> http://cr.openjdk.java.net/~vlivanov/8247502/webrev.00/
> 
> As Tobias discovered, PhaseStringOpts crashes when it encounters String::append() argument being TOP: TOP is a constant, 
> but the code expects to see a String constant instead.
> 
> It happens while processing a call in unreachable infinite loop. The code is effectively dead, but IGVN and 
> PhaseRemoveUseless don't see that. It is discovered later when loop opts kick in which clean it up.
> 
> Proposed fix tries to make the code more robust and just bails out the optimization when TOP is encountered.
> 
> Alternative way to fix the problem would be to clean up the graph before PhaseStringOpts (e.g., by running 
> PhaseIdealLoop(LoopOptsNone) since PhaseRemoveUseless is not enough), but PhaseIdealLoop pass can be expensive. So, I'm 
> in favor of the local fix in PhaseStringOpts.
> 
> Testing: crash reproducer, hs-precheckin-comp, hs-tier1, hs-tier2, tier1
> 
> Thanks!
> 
> PS: no regression test since I wasn't able to extract a simple reproducer from the crash log.
> 
> Best regards,
> Vladimir Ivanov


More information about the hotspot-compiler-dev mailing list