On 08/23/2017 06:08 PM, Aleksey Shipilev wrote:
On 08/23/2017 01:52 PM, Claes Redestad wrote:
What I wasn't sure about is *when* the String.valueOf should happen, but as
makeConcatWithConstants specify "If necessary, the factory would call toString 
to
perform a one-time String conversion" then I think we could (should?) do this at
our earliest convenience, which might even be in the RecipeElement construction:
Yes, I don't see why not.

http://cr.openjdk.java.net/~redestad/8186500/jdk.02/
Hm!

  *) Seems that due to cnst being an (autoboxed) reference, isPrimitive is 
always false on this path?

Ouch...

  332             Object value = Objects.requireNonNull(cnst);
  333             if (!value.getClass().isPrimitive()) {
  334                 this.value = String.valueOf(cnst);
  335             } else {
  336                 this.value = value;
  337             }

...so that value is always String after this?

Right. Which works, and I'm not sure we really lose much this way. Nothing on the code generated by javac, only theoretical performance points on other code. Keep
it simple for now and just do String.valueOf in RecipeElement always?

...and that avoids String conversion on RecipeElement.getValue() paths 
completely?

We could still do String.valueOf on the other end to make sure (as this
is a no-op on Strings):

http://cr.openjdk.java.net/~redestad/8186500/jdk.03

Thanks!

/Claes

Reply via email to