On Mon, 12 May 2025 09:15:56 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> wrote:
>> Aggelos Biboudis has updated the pull request incrementally with one >> additional commit since the last revision: >> >> Simplify unconditional exactness in both Types and SwitchBootstraps > > src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 786: > >> 784: (selectorType.equals(char.class) && >> (selectorWrapper.isStrictSubRangeOf(targetWrapper))) || >> 785: (selectorType.equals(int.class) && >> (targetType.equals(double.class) || targetType.equals(long.class))) || >> 786: (selectorType.equals(float.class) && >> (selectorWrapper.isStrictSubRangeOf(targetWrapper)))))) return true; > > Is `double` the only allowed target for `float` ? If so, perhaps we could > simplify like for other selector types. > Or, alternatively, I wonder if it wouldn't be simpler to _always_ check for > strict subrange on the wrappers, but then ban the conversions that are not > exact (e.g. int -> float), as those are few? Thanks @mcimadamore. I gave it a shot, despite the fact that it touches the mirrored code in Types because it is a good recommendation. But please take a look again since it is a very central part: https://github.com/openjdk/jdk/pull/25090/commits/a7c4e398f2a163083853a2a6e58a97d6a06d592f ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25090#discussion_r2086413064