[External] : Re: String concatenation order of operations
brian.goetz at oracle.com
Wed Sep 8 22:01:00 UTC 2021
> It'd be nice to reconcile the implementation with the spec if
> possible, though. I wonder what the performance hit would be from
> calling toString on the arguments more eagerly to preserve the
> evaluation order.
The nature of indy leads to the structure we ended up with. The natural
way to do this is to have the various arguments passed as real stack
arguments, causing them to all be evaluated before being pushed through
the MH nest (which is where the string conversion happens, using
MethodHandle::filterArguments.) We'd essentially have to write a new
bootstrap (but leave the old one in place), and have the compiler
generate bytecode to do the string conversion as the values are being
pushed on the stack. This requires a different bootstrap and a
different calling convention. So old bytecode will stay around, and the
old bootstrap would have to be kept around ... pretty disruptive.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the compiler-dev