On 14 Jul 2023, at 9:17, Dan Smith wrote: > … > The magic '<new>' method seems reasonable, and provides a path going forward > to get rid of new/dup/<init> code. But it doesn't do anything for legacy > bytecode. So the problem of needing a bytecode rewriting tool remains.
If/when we decide to do that magic ‘<new>’, and newer classfiles avoid the new/dup/init dance, two good things will start to happen. First, migration to value types will become somewhat easier, avoiding recompilation in some cases (those cases where a client says ‘new SomeValue()’). Second, the “dance” will begin to disappear from classfiles, and we can think about disallowing it in newer classfiles, thus taking 10% off the top of verifier complexity and bugginess. I’d love to put “the dance” in our rear view mirror.
