RFR(S): 8214862: assert(proj != __null) at compile.cpp:3251
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Dec 12 17:35:42 UTC 2018
I agree that correct thing is to bailout compilation as soon as possible when infinite loop is detected.
Do you hit next bailout (with fix)?:
http://hg.openjdk.java.net/jdk/jdk/file/24525070d934/src/hotspot/share/opto/compile.cpp#l3669
Is fall-through path eliminated because it is not reachable from Root because of infinite loop?
I think we should detect infinite loop very early, after first PhaseRemoveUseless. Or may be just before or during
PhaseRemoveUseless when we still have path.
What happens if a method has *only* infinite loop? In which phase we detect it and bailout?
Thanks,
Vladimir
On 12/7/18 1:41 AM, Roland Westrelin wrote:
>
> Thanks for looking at this, Vladimir.
>
>> Why relaxing assert is not enough? Why you want to delay edge removal?
>
> Relaxing the assert causes the compilation to fail with malformed
> control flow (not retryable). My change would cause the compilation to
> fail with infinite loop (not retryable). So the end result is the same,
> indeed.
>
> Without my change, the IR graph will have IfNodes with a single
> projection (for instance). So an "illegal" graph. Wouldn't we want to
> keep the graph legal?
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list