No kidding, I thought it just made it easier to maintain the expression semantics
there's some situations where some more complex form of local indexing is required e.g within loops/try blocks and Compiler. java doesn't do that
so if you don't hoist in those contexts you'd get multiple locals reusing the same slot
but it's doable otherwise, the mutabilify in compiler. java doesn't make it trivial tho
I got kinda there in 2015 but gave up
there are also potential performance implications of hoisting loops that at some point made it easier for C2 to inline stuff, but not sure if that's still a thing in modern jvms
but again the hoisting patch using methods would have the same characteristics here
but as far as I remember from looking at the commit history the hoisting was introduced to fix the (accidental?) local slot reuse in the buggy cases, not due to this perf implication
there was a bug recently where this was still happening and the workaround was to lift more contexts
clojurescript has no requiring-resolve ? is that something not feasible?
prob a better question for #cljs-dev (but I suspect the answer is no)
I asked, not easily
I ended up having to add a code based api for my use case to allow for it