From 1e15af5a369d9fd7f0b07f7f07b6a96b72976206 Mon Sep 17 00:00:00 2001 From: ChrisHegarty Date: Fri, 9 Jun 2023 13:59:25 +0100 Subject: [PATCH 1/3] initial commit --- .../incubator/vector/VectorIntrinsics.java | 7 +++++- test/jdk/jdk/incubator/vector/VectorRuns.java | 4 ++- .../incubator/vector/empty_security.policy | 25 +++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 test/jdk/jdk/incubator/vector/empty_security.policy diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java index c9bcfaa70b757..7a55c5c461b3d 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java @@ -26,10 +26,15 @@ import jdk.internal.vm.annotation.ForceInline; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Objects; /*non-public*/ class VectorIntrinsics { - static final int VECTOR_ACCESS_OOB_CHECK = Integer.getInteger("jdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK", 2); + + @SuppressWarnings("removal") + static final int VECTOR_ACCESS_OOB_CHECK = AccessController.doPrivileged((PrivilegedAction) () -> + Integer.getInteger("jdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK", 2)); @ForceInline static void requireLength(int haveLength, int length) { diff --git a/test/jdk/jdk/incubator/vector/VectorRuns.java b/test/jdk/jdk/incubator/vector/VectorRuns.java index 1c66a185bc672..37129375f33f2 100644 --- a/test/jdk/jdk/incubator/vector/VectorRuns.java +++ b/test/jdk/jdk/incubator/vector/VectorRuns.java @@ -28,6 +28,8 @@ /** * @test * @modules jdk.incubator.vector + * @run main VectorRuns + * @run main/othervm/java.security.policy=empty_security.policy VectorRuns */ public class VectorRuns { @@ -68,7 +70,7 @@ static int countRunAscendingVector(int[] a) { if (r >= a.length) return a.length; - int length = a.length & (species.length() - 1); + int length = a.length & ~(species.length() - 1); if (length == a.length) length -= species.length(); while (r < length) { IntVector vl = IntVector.fromArray(species, a, r - 1); diff --git a/test/jdk/jdk/incubator/vector/empty_security.policy b/test/jdk/jdk/incubator/vector/empty_security.policy new file mode 100644 index 0000000000000..f7ec7b5990b38 --- /dev/null +++ b/test/jdk/jdk/incubator/vector/empty_security.policy @@ -0,0 +1,25 @@ +// +// Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. +// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +// +// This code is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License version 2 only, as +// published by the Free Software Foundation. +// +// This code is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// version 2 for more details (a copy is included in the LICENSE file that +// accompanied this code). +// +// You should have received a copy of the GNU General Public License version +// 2 along with this work; if not, write to the Free Software Foundation, +// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +// +// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +// or visit www.oracle.com if you need additional information or have any +// questions. +// + +// This policy is used by tests not requiring permissions, to assert that the +// JDK implementation has the correct privileged blocks. From 4312aec1bbcb0be2f65798aada38e41e26f6557d Mon Sep 17 00:00:00 2001 From: ChrisHegarty Date: Fri, 9 Jun 2023 14:13:07 +0100 Subject: [PATCH 2/3] add at bug and remove newline --- .../share/classes/jdk/incubator/vector/VectorIntrinsics.java | 1 - test/jdk/jdk/incubator/vector/VectorRuns.java | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java index 7a55c5c461b3d..c0e70ca58e683 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java @@ -31,7 +31,6 @@ import java.util.Objects; /*non-public*/ class VectorIntrinsics { - @SuppressWarnings("removal") static final int VECTOR_ACCESS_OOB_CHECK = AccessController.doPrivileged((PrivilegedAction) () -> Integer.getInteger("jdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK", 2)); diff --git a/test/jdk/jdk/incubator/vector/VectorRuns.java b/test/jdk/jdk/incubator/vector/VectorRuns.java index 37129375f33f2..ee89fcf208df1 100644 --- a/test/jdk/jdk/incubator/vector/VectorRuns.java +++ b/test/jdk/jdk/incubator/vector/VectorRuns.java @@ -27,6 +27,7 @@ /** * @test + * @bug 8309727 * @modules jdk.incubator.vector * @run main VectorRuns * @run main/othervm/java.security.policy=empty_security.policy VectorRuns From 5a4be97faa822a612dbb9d86cf9b6cf4d88483da Mon Sep 17 00:00:00 2001 From: ChrisHegarty Date: Fri, 9 Jun 2023 20:22:22 +0100 Subject: [PATCH 3/3] use loopBound --- test/jdk/jdk/incubator/vector/VectorRuns.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jdk/jdk/incubator/vector/VectorRuns.java b/test/jdk/jdk/incubator/vector/VectorRuns.java index ee89fcf208df1..c9d9889a71479 100644 --- a/test/jdk/jdk/incubator/vector/VectorRuns.java +++ b/test/jdk/jdk/incubator/vector/VectorRuns.java @@ -71,7 +71,7 @@ static int countRunAscendingVector(int[] a) { if (r >= a.length) return a.length; - int length = a.length & ~(species.length() - 1); + int length = species.loopBound(a.length); if (length == a.length) length -= species.length(); while (r < length) { IntVector vl = IntVector.fromArray(species, a, r - 1);