< prev index next >

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

Print this page
rev 58165 : Fix the issue that unslice modifies the argument vector
Summary: Change the name of getElements() to vec() and clone argument value to
avoid it being modified

*** 86,96 **** // and lazy version of C++ templates. // Virtualized getter /*package-private*/ ! abstract byte[] getElements(); // Virtualized constructors /** * Build a vector directly using my own constructor. --- 86,96 ---- // and lazy version of C++ templates. // Virtualized getter /*package-private*/ ! abstract byte[] vec(); // Virtualized constructors /** * Build a vector directly using my own constructor.
*** 150,160 **** abstract ByteVector uOp(FUnOp f); @ForceInline final ByteVector uOpTemplate(FUnOp f) { ! byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < res.length; i++) { res[i] = f.apply(i, vec[i]); } return vectorFactory(res); --- 150,160 ---- abstract ByteVector uOp(FUnOp f); @ForceInline final ByteVector uOpTemplate(FUnOp f) { ! byte[] vec = vec(); byte[] res = new byte[length()]; for (int i = 0; i < res.length; i++) { res[i] = f.apply(i, vec[i]); } return vectorFactory(res);
*** 166,176 **** FUnOp f); @ForceInline final ByteVector uOpTemplate(VectorMask<Byte> m, FUnOp f) { ! byte[] vec = getElements(); byte[] res = new byte[length()]; boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < res.length; i++) { res[i] = mbits[i] ? f.apply(i, vec[i]) : vec[i]; } --- 166,176 ---- FUnOp f); @ForceInline final ByteVector uOpTemplate(VectorMask<Byte> m, FUnOp f) { ! byte[] vec = vec(); byte[] res = new byte[length()]; boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < res.length; i++) { res[i] = mbits[i] ? f.apply(i, vec[i]) : vec[i]; }
*** 191,202 **** @ForceInline final ByteVector bOpTemplate(Vector<Byte> o, FBinOp f) { byte[] res = new byte[length()]; ! byte[] vec1 = this.getElements(); ! byte[] vec2 = ((ByteVector)o).getElements(); for (int i = 0; i < res.length; i++) { res[i] = f.apply(i, vec1[i], vec2[i]); } return vectorFactory(res); } --- 191,202 ---- @ForceInline final ByteVector bOpTemplate(Vector<Byte> o, FBinOp f) { byte[] res = new byte[length()]; ! byte[] vec1 = this.vec(); ! byte[] vec2 = ((ByteVector)o).vec(); for (int i = 0; i < res.length; i++) { res[i] = f.apply(i, vec1[i], vec2[i]); } return vectorFactory(res); }
*** 210,221 **** final ByteVector bOpTemplate(Vector<Byte> o, VectorMask<Byte> m, FBinOp f) { byte[] res = new byte[length()]; ! byte[] vec1 = this.getElements(); ! byte[] vec2 = ((ByteVector)o).getElements(); boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < res.length; i++) { res[i] = mbits[i] ? f.apply(i, vec1[i], vec2[i]) : vec1[i]; } return vectorFactory(res); --- 210,221 ---- final ByteVector bOpTemplate(Vector<Byte> o, VectorMask<Byte> m, FBinOp f) { byte[] res = new byte[length()]; ! byte[] vec1 = this.vec(); ! byte[] vec2 = ((ByteVector)o).vec(); boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < res.length; i++) { res[i] = mbits[i] ? f.apply(i, vec1[i], vec2[i]) : vec1[i]; } return vectorFactory(res);
*** 237,249 **** final ByteVector tOpTemplate(Vector<Byte> o1, Vector<Byte> o2, FTriOp f) { byte[] res = new byte[length()]; ! byte[] vec1 = this.getElements(); ! byte[] vec2 = ((ByteVector)o1).getElements(); ! byte[] vec3 = ((ByteVector)o2).getElements(); for (int i = 0; i < res.length; i++) { res[i] = f.apply(i, vec1[i], vec2[i], vec3[i]); } return vectorFactory(res); } --- 237,249 ---- final ByteVector tOpTemplate(Vector<Byte> o1, Vector<Byte> o2, FTriOp f) { byte[] res = new byte[length()]; ! byte[] vec1 = this.vec(); ! byte[] vec2 = ((ByteVector)o1).vec(); ! byte[] vec3 = ((ByteVector)o2).vec(); for (int i = 0; i < res.length; i++) { res[i] = f.apply(i, vec1[i], vec2[i], vec3[i]); } return vectorFactory(res); }
*** 259,271 **** ByteVector tOpTemplate(Vector<Byte> o1, Vector<Byte> o2, VectorMask<Byte> m, FTriOp f) { byte[] res = new byte[length()]; ! byte[] vec1 = this.getElements(); ! byte[] vec2 = ((ByteVector)o1).getElements(); ! byte[] vec3 = ((ByteVector)o2).getElements(); boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < res.length; i++) { res[i] = mbits[i] ? f.apply(i, vec1[i], vec2[i], vec3[i]) : vec1[i]; } return vectorFactory(res); --- 259,271 ---- ByteVector tOpTemplate(Vector<Byte> o1, Vector<Byte> o2, VectorMask<Byte> m, FTriOp f) { byte[] res = new byte[length()]; ! byte[] vec1 = this.vec(); ! byte[] vec2 = ((ByteVector)o1).vec(); ! byte[] vec3 = ((ByteVector)o2).vec(); boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < res.length; i++) { res[i] = mbits[i] ? f.apply(i, vec1[i], vec2[i], vec3[i]) : vec1[i]; } return vectorFactory(res);
*** 277,287 **** abstract byte rOp(byte v, FBinOp f); @ForceInline final byte rOpTemplate(byte v, FBinOp f) { ! byte[] vec = getElements(); for (int i = 0; i < vec.length; i++) { v = f.apply(i, v, vec[i]); } return v; } --- 277,287 ---- abstract byte rOp(byte v, FBinOp f); @ForceInline final byte rOpTemplate(byte v, FBinOp f) { ! byte[] vec = vec(); for (int i = 0; i < vec.length; i++) { v = f.apply(i, v, vec[i]); } return v; }
*** 296,306 **** /*package-private*/ @ForceInline final <M> ByteVector ldOp(M memory, int offset, FLdOp<M> f) { ! //dummy; no vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < res.length; i++) { res[i] = f.apply(memory, offset, i); } return vectorFactory(res); --- 296,306 ---- /*package-private*/ @ForceInline final <M> ByteVector ldOp(M memory, int offset, FLdOp<M> f) { ! //dummy; no vec = vec(); byte[] res = new byte[length()]; for (int i = 0; i < res.length; i++) { res[i] = f.apply(memory, offset, i); } return vectorFactory(res);
*** 310,320 **** @ForceInline final <M> ByteVector ldOp(M memory, int offset, VectorMask<Byte> m, FLdOp<M> f) { ! //byte[] vec = getElements(); byte[] res = new byte[length()]; boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < res.length; i++) { if (mbits[i]) { res[i] = f.apply(memory, offset, i); --- 310,320 ---- @ForceInline final <M> ByteVector ldOp(M memory, int offset, VectorMask<Byte> m, FLdOp<M> f) { ! //byte[] vec = vec(); byte[] res = new byte[length()]; boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < res.length; i++) { if (mbits[i]) { res[i] = f.apply(memory, offset, i);
*** 330,340 **** /*package-private*/ @ForceInline final <M> void stOp(M memory, int offset, FStOp<M> f) { ! byte[] vec = getElements(); for (int i = 0; i < vec.length; i++) { f.apply(memory, offset, i, vec[i]); } } --- 330,340 ---- /*package-private*/ @ForceInline final <M> void stOp(M memory, int offset, FStOp<M> f) { ! byte[] vec = vec(); for (int i = 0; i < vec.length; i++) { f.apply(memory, offset, i, vec[i]); } }
*** 342,352 **** @ForceInline final <M> void stOp(M memory, int offset, VectorMask<Byte> m, FStOp<M> f) { ! byte[] vec = getElements(); boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < vec.length; i++) { if (mbits[i]) { f.apply(memory, offset, i, vec[i]); } --- 342,352 ---- @ForceInline final <M> void stOp(M memory, int offset, VectorMask<Byte> m, FStOp<M> f) { ! byte[] vec = vec(); boolean[] mbits = ((AbstractMask<Byte>)m).getBits(); for (int i = 0; i < vec.length; i++) { if (mbits[i]) { f.apply(memory, offset, i, vec[i]); }
*** 364,375 **** @ForceInline final AbstractMask<Byte> bTest(int cond, Vector<Byte> o, FBinTest f) { ! byte[] vec1 = getElements(); ! byte[] vec2 = ((ByteVector)o).getElements(); boolean[] bits = new boolean[length()]; for (int i = 0; i < length(); i++){ bits[i] = f.apply(cond, i, vec1[i], vec2[i]); } return maskFactory(bits); --- 364,375 ---- @ForceInline final AbstractMask<Byte> bTest(int cond, Vector<Byte> o, FBinTest f) { ! byte[] vec1 = vec(); ! byte[] vec2 = ((ByteVector)o).vec(); boolean[] bits = new boolean[length()]; for (int i = 0; i < length(); i++){ bits[i] = f.apply(cond, i, vec1[i], vec2[i]); } return maskFactory(bits);
*** 2044,2055 **** final @ForceInline ByteVector sliceTemplate(int origin, Vector<Byte> v1) { ByteVector that = (ByteVector) v1; that.check(this); ! byte[] a0 = this.getElements(); ! byte[] a1 = that.getElements(); byte[] res = new byte[a0.length]; int vlen = res.length; int firstPart = vlen - origin; System.arraycopy(a0, origin, res, 0, firstPart); System.arraycopy(a1, 0, res, firstPart, origin); --- 2044,2055 ---- final @ForceInline ByteVector sliceTemplate(int origin, Vector<Byte> v1) { ByteVector that = (ByteVector) v1; that.check(this); ! byte[] a0 = this.vec(); ! byte[] a1 = that.vec(); byte[] res = new byte[a0.length]; int vlen = res.length; int firstPart = vlen - origin; System.arraycopy(a0, origin, res, 0, firstPart); System.arraycopy(a1, 0, res, firstPart, origin);
*** 2087,2098 **** @ForceInline ByteVector unsliceTemplate(int origin, Vector<Byte> w, int part) { ByteVector that = (ByteVector) w; that.check(this); ! byte[] slice = this.getElements(); ! byte[] res = that.getElements(); int vlen = res.length; int firstPart = vlen - origin; switch (part) { case 0: System.arraycopy(slice, 0, res, origin, firstPart); --- 2087,2098 ---- @ForceInline ByteVector unsliceTemplate(int origin, Vector<Byte> w, int part) { ByteVector that = (ByteVector) w; that.check(this); ! byte[] slice = this.vec(); ! byte[] res = that.vec().clone(); int vlen = res.length; int firstPart = vlen - origin; switch (part) { case 0: System.arraycopy(slice, 0, res, origin, firstPart);
< prev index next >