Arrays.copyOf does not work with value type arrays
David Simms
david.simms at oracle.com
Wed Mar 15 15:29:16 UTC 2017
Hi Tobias,
So this is a method handle issue, i.e. javac generates:
invokedynamic #29, 0 // InvokeDynamic #0:copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
For call to "public static <T> T[] copyOf(T[] original, int newLength)".
This is something of a problem here. MVT array method handles return
Object as the array.
So I'm not sure you can call Arrays.copyOf with "[QPoint" as you are
doing here.
Furthermore, method handle JDK runtime support for Q types is incomplete.
/David Simms
On 15/03/2017 3:51 p.m., Tobias Hartmann wrote:
> import java.util.Arrays;
>
> __ByValue final class Point {
> final int x;
> final int y;
>
> private Point(int x, int y) {
> this.x = x;
> this.y = y;
> }
>
> public static Point createPoint(int x, int y) {
> return __Make Point(x, y);
> }
> }
>
> public class Test {
>
> public static void main(String[] args) {
> Point[] src = new Point[10];
> Point[] dst = Arrays.copyOf(src, 10);
> }
>
> }
More information about the valhalla-dev
mailing list