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..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 @@ -26,10 +26,14 @@ 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..c9d9889a71479 100644 --- a/test/jdk/jdk/incubator/vector/VectorRuns.java +++ b/test/jdk/jdk/incubator/vector/VectorRuns.java @@ -27,7 +27,10 @@ /** * @test + * @bug 8309727 * @modules jdk.incubator.vector + * @run main VectorRuns + * @run main/othervm/java.security.policy=empty_security.policy VectorRuns */ public class VectorRuns { @@ -68,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); 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.