< prev index next >

src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long64Vector.java

Print this page
rev 55589 : 8221816: [vector] IndexOutOfBoundsException for fromArray/intoArray with unset mask lanes
Reviewed-by: duke

*** 875,912 **** @Override @ForceInline public void intoArray(long[] a, int ix) { Objects.requireNonNull(a); ! ix = VectorIntrinsics.checkIndex(ix, a.length, LENGTH); ! VectorIntrinsics.store(Long64Vector.class, long.class, LENGTH, ! a, (((long) ix) << ARRAY_SHIFT) + Unsafe.ARRAY_LONG_BASE_OFFSET, ! this, ! a, ix, ! (arr, idx, v) -> v.forEach((i, e) -> arr[idx + i] = e)); } @Override @ForceInline public final void intoArray(long[] a, int ax, Mask<Long> m) { ! LongVector oldVal = LongVector.fromArray(SPECIES, a, ax); ! LongVector newVal = oldVal.blend(this, m); ! newVal.intoArray(a, ax); } @Override @ForceInline public void intoArray(long[] a, int ix, int[] b, int iy) { this.intoArray(a, ix + b[iy]); } @Override @ForceInline public final void intoArray(long[] a, int ax, Mask<Long> m, int[] b, int iy) { ! // @@@ This can result in out of bounds errors for unset mask lanes ! LongVector oldVal = LongVector.fromArray(SPECIES, a, ax, b, iy); ! LongVector newVal = oldVal.blend(this, m); ! newVal.intoArray(a, ax, b, iy); } @Override @ForceInline public void intoByteArray(byte[] a, int ix) { --- 875,906 ---- @Override @ForceInline public void intoArray(long[] a, int ix) { Objects.requireNonNull(a); ! forEach((i, e) -> a[ix + i] = e); } @Override @ForceInline public final void intoArray(long[] a, int ax, Mask<Long> m) { ! Objects.requireNonNull(a); ! forEach(m, (i, e) -> a[ax + i] = e); } + @Override @ForceInline public void intoArray(long[] a, int ix, int[] b, int iy) { this.intoArray(a, ix + b[iy]); } @Override @ForceInline public final void intoArray(long[] a, int ax, Mask<Long> m, int[] b, int iy) { ! Objects.requireNonNull(a); ! Objects.requireNonNull(b); ! forEach(m, (i, e) -> a[ax + b[iy+i]] = e); } @Override @ForceInline public void intoByteArray(byte[] a, int ix) {
< prev index next >