Evolving the wrapper classes

Tobi Ajila Tobi_Ajila at ca.ibm.com
Fri Jun 19 17:07:25 UTC 2020



> Because arrays have identity (not to mention potentially large copying
costs), there is simply no reasonable conversion we can define; any
"conversion" would involve copying all the data, changing identity, or
both.  Just as with the array subtyping requirements (Point[] <: Point.ref
[] <: Object[]), these are things only the VM can do for us.

I suspected that this was likely due to the large cost of converting
between `[I` and `[java/lang/Integer$val`. However, I am still a little
unclear as to what the motivation is for this. Is this solely for
specialized generics?

In Dan's examples with `I` and `java/lang/Integer$val`, the only places
where conversions are needed are when primitives are used as type
parameters or to call instance methods on them, both of which can already
be done with primitive arrays. So in the LW3 - LW20 timeframe would we have
any need for these conversions? If so, could you provide some examples?

In the case of specialized generics, is the intention that `[I` (and I
suppose `I` as well) will appear in generic code?



More information about the valhalla-spec-observers mailing list