scala3
scala3 copied to clipboard
Enum ordinals -> tableswitch
Just following up on a conversation @odersky and I had at SBTB … I was wondering if we could use enum ordinals to emit tableswitches for eligible match expressions. I have had cases where I had to reorder cases as a performance optimization and something like this would have been really helpful.
We don't necessarily need to do the same, but for reference here's how Java does it: http://www.benf.org/other/cfr/switch-on-enum.html, it's complicated because it's designed to survive reordering and addition of fields to the enum.
This is a must done,take a look at :
https://github.com/akka/akka/pull/25982/files#diff-ac929e6fd84743df4b6e214b5499d644R423
for why...
@hepin1989 without benchmark results you won't convince us that it's a "must done"
Same patterns in scala future,zio, etc
and we can't rely on mima because definitions are order sensitive
There is some discussion this issue that may help whoever picks this up in the now closed-as-duplicate ticket: https://github.com/scala/scala3/issues/23314
Even Kotlin does this.
Most damning of all.
@som-snytt 😃 I didn't really mean it as a slight for the Kotlyn compiler. I just meant, it's a newer language so you wouldn't expect the compiler to be that mature and contain this kinds of optimizations.