> Given your examples can we assume that the JVM will never need to do an 
> implicit `Qjava/lang/Integer$val;` to `I` conversion? And these will always 
> be explicit conversions performed by javac?
> 

Correct.

> > - The type [I is considered by the verifier to be equivalent to 
> > [java/lang/Integer$val. Array operations (aaload, iaload, etc.) support 
> > this.
> 
> Could you please explain the motivation behind this? Specifically, in which 
> cases are iaload and aaload operations both performed on `[I` ? 
> 
> If `I` and `Qjava/lang/Integer$val;` will require explicit javac conversions, 
> shouldn't `[I` and `[java/lang/Integer$val` also?
> 

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.  


Reply via email to