On Thu, 6 Nov 2025 09:30:56 GMT, Roland Westrelin <[email protected]> wrote:
>> I disagree. The issue only surfaces in this particular occasion does not >> mean it will not appear in other circumstances, possibly in the future. Even >> if the code is there on purpose, it seems that the purpose is executed >> incorrectly. >> >> Additionally, an empty speculative type is supposed to mean that the path is >> speculatively unreachable, which is not the case here. So, another approach >> may be to fix the injection of speculative and assert that we should not >> obtain an empty speculative type? > >> Additionally, an empty speculative type is supposed to mean that the path is >> speculatively unreachable, > > Or that profile data for 2 different points in the execution is inconsistent > which given how profile data is collected seems as likely to me. > > Speculative types were added as a mechanism to fight profile pollution for > scripting languages running on the JVM (specifically nashorn). They work > really well in some cases. But they also have limited applicability. To me, > it doesn't seem like a good use of developer time or our complexity budget to > go with a complicated fix. I have looked at the example provided by @rwestrel , and it seems true that when the speculative type is empty, the node is speculatively unreachable (`test1` is always called with `flag1` being `false`, so the return type of `inline2(flag2)` inside the compilation of `test1` is unreachable). Now what can we do with this? ------------- PR Comment: https://git.openjdk.org/valhalla/pull/1717#issuecomment-3496512649
