diff --git a/jcl/src/java.base/share/classes/java/security/AccessControlContext.java b/jcl/src/java.base/share/classes/java/security/AccessControlContext.java
index 9684bff2300..8c990dff578 100644
--- a/jcl/src/java.base/share/classes/java/security/AccessControlContext.java
+++ b/jcl/src/java.base/share/classes/java/security/AccessControlContext.java
@@ -722,6 +722,13 @@ private boolean debugHelper(Permission perm) {
}
/**
+/*[IF JAVA_SPEC_VERSION >= 24]
+ * Throws java.security.AccessControlException
+ *
+ * @param perm is ignored
+ * @exception java.security.AccessControlException
+ * is always thrown
+/*[ELSE] JAVA_SPEC_VERSION >= 24
* Checks if the permission perm
is allowed in this context.
* All ProtectionDomains must grant the permission for it to be granted.
*
@@ -731,6 +738,7 @@ private boolean debugHelper(Permission perm) {
* thrown when perm is not granted.
* @exception NullPointerException
* if perm is null
+/*[ENDIF] JAVA_SPEC_VERSION >= 24
*/
public void checkPermission(Permission perm) throws AccessControlException {
/*[IF JAVA_SPEC_VERSION >= 24]*/
diff --git a/jcl/src/java.base/share/classes/java/security/AccessController.java b/jcl/src/java.base/share/classes/java/security/AccessController.java
index cf3c744ab95..d4731d92080 100644
--- a/jcl/src/java.base/share/classes/java/security/AccessController.java
+++ b/jcl/src/java.base/share/classes/java/security/AccessController.java
@@ -23,7 +23,9 @@
package java.security;
import com.ibm.oti.util.Msg;
+/*[IF JAVA_SPEC_VERSION < 24]*/
import sun.security.util.SecurityConstants;
+/*[ENDIF] JAVA_SPEC_VERSION < 24 */
/*[IF JAVA_SPEC_VERSION >= 9]
import jdk.internal.reflect.CallerSensitive;
@@ -49,18 +51,17 @@ public final class AccessController {
initializeInternal();
}
+ private static native void initializeInternal();
+
/*[IF JAVA_SPEC_VERSION >= 24]*/
private static AccessControlContext ACC_NO_PERM = new AccessControlContext(
new ProtectionDomain[] { new ProtectionDomain(null, null) });
-/*[ENDIF] JAVA_SPEC_VERSION >= 24 */
-
+/*[ELSE] JAVA_SPEC_VERSION >= 24 */
static final int OBJS_INDEX_ACC = 0;
static final int OBJS_INDEX_PDS = 1;
static final int OBJS_ARRAY_SIZE = 3;
static final int OBJS_INDEX_PERMS_OR_CACHECHECKED = 2;
-private static native void initializeInternal();
-
/* [PR CMVC 188787] Enabling -Djava.security.debug option within WAS keeps JVM busy */
static final class DebugRecursionDetection {
private static ThreadLocal tlDebug = new ThreadLocal<>();
@@ -68,6 +69,7 @@ static ThreadLocal getTlDebug() {
return tlDebug;
}
}
+/*[ENDIF] JAVA_SPEC_VERSION >= 24 */
/*[PR 1FDIC6B] J9JCL:WIN95 - AccessController missing private no-arg constructor */
/**
@@ -77,6 +79,7 @@ private AccessController() {
super();
}
+/*[IF JAVA_SPEC_VERSION < 24]*/
/**
* The object array returned has following format:
*
@@ -192,7 +195,6 @@ private static void throwACE(boolean debug, Permission perm, ProtectionDomain pD
}
}
-/*[IF JAVA_SPEC_VERSION < 24]*/
/**
* Helper method to check whether the running program is allowed to access the resource
* being guarded by the given Permission argument
@@ -275,7 +277,6 @@ private static boolean checkPermissionHelper(Permission perm, AccessControlConte
}
return limitedPermImplied;
}
-/*[ENDIF] JAVA_SPEC_VERSION < 24 */
/**
* Helper to print debug stack information for checkPermission().
@@ -365,8 +366,15 @@ private static boolean debugHelperJEP140(Object[] objects, Permission perm) {
debugPrintStack(debug, perm);
return debug;
}
+/*[ENDIF] JAVA_SPEC_VERSION < 24 */
/**
+/*[IF JAVA_SPEC_VERSION >= 24]
+ * Throws AccessControlException
+ *
+ * @param perm is ignored
+ * @exception AccessControlException is always thrown
+/*[ELSE] JAVA_SPEC_VERSION >= 24
* Checks whether the running program is allowed to
* access the resource being guarded by the given
* Permission argument.
@@ -374,6 +382,7 @@ private static boolean debugHelperJEP140(Object[] objects, Permission perm) {
* @param perm the permission to check
* @exception AccessControlException if access is not allowed.
* NullPointerException if perm is null
+/*[ENDIF] JAVA_SPEC_VERSION >= 24
*/
public static void checkPermission(Permission perm) throws AccessControlException {
/*[IF JAVA_SPEC_VERSION >= 24]*/
@@ -455,6 +464,9 @@ private static void keepalive(Permission... perms) {
}
/**
+/*[IF JAVA_SPEC_VERSION >= 24]
+ * @return an AccessControlContext with no permissions
+/*[ELSE] JAVA_SPEC_VERSION >= 24
* Answers the access controller context of the current thread,
* including the inherited ones. It basically retrieves all the
* protection domains from the calling stack and creates an
@@ -463,6 +475,7 @@ private static void keepalive(Permission... perms) {
* @return an AccessControlContext which captures the current state
*
* @see AccessControlContext
+/*[ENDIF] JAVA_SPEC_VERSION >= 24
*/
public static AccessControlContext getContext() {
/*[IF JAVA_SPEC_VERSION >= 24]*/
@@ -472,6 +485,7 @@ public static AccessControlContext getContext() {
/*[ENDIF] JAVA_SPEC_VERSION >= 24 */
}
+/*[IF JAVA_SPEC_VERSION < 24]*/
/**
* This is a helper method for getContext() and doPrivilegedWithCombiner methods.
* Answers the access controller context of the current thread including the inherited ones.
@@ -637,6 +651,7 @@ private static int getNewAuthorizedState(AccessControlContext acc, ProtectionDom
}
return newAuthorizedState;
}
+/*[ENDIF] JAVA_SPEC_VERSION < 24 */
/**
* Helper method to combine the ProtectionDomain objects
@@ -849,7 +864,11 @@ public static T doPrivileged (PrivilegedExceptionAction action, AccessCon
*/
@CallerSensitive
public static T doPrivilegedWithCombiner(PrivilegedAction action) {
+/*[IF JAVA_SPEC_VERSION >= 24]*/
+ return doPrivileged(action, null);
+/*[ELSE] JAVA_SPEC_VERSION >= 24*/
return doPrivileged(action, doPrivilegedWithCombinerHelper(null));
+/*[ENDIF] JAVA_SPEC_VERSION >= 24*/
}
/**
@@ -876,9 +895,14 @@ public static T doPrivilegedWithCombiner(PrivilegedAction action) {
public static T doPrivilegedWithCombiner(PrivilegedExceptionAction action)
throws PrivilegedActionException
{
+/*[IF JAVA_SPEC_VERSION >= 24]*/
+ return doPrivileged(action, null);
+/*[ELSE] JAVA_SPEC_VERSION >= 24*/
return doPrivileged(action, doPrivilegedWithCombinerHelper(null));
+/*[ENDIF] JAVA_SPEC_VERSION >= 24*/
}
+/*[IF JAVA_SPEC_VERSION < 24]*/
/**
* Helper method to check if any permission is null
*
@@ -894,6 +918,7 @@ private static void checkPermsNPE(Permission... perms) {
}
}
}
+/*[ENDIF] JAVA_SPEC_VERSION < 24 */
/**
* Performs the privileged action specified by action
.
@@ -922,7 +947,9 @@ private static void checkPermsNPE(Permission... perms) {
public static T doPrivileged(PrivilegedAction action,
AccessControlContext context, Permission... perms)
{
+/*[IF JAVA_SPEC_VERSION < 24]*/
checkPermsNPE(perms);
+/*[ENDIF] JAVA_SPEC_VERSION < 24 */
T result = action.run();
keepalive(context);
keepalive(perms);
@@ -954,8 +981,13 @@ public static T doPrivileged(PrivilegedAction action,
public static T doPrivilegedWithCombiner(PrivilegedAction action,
AccessControlContext context, Permission... perms)
{
+/*[IF JAVA_SPEC_VERSION >= 24]*/
+ return doPrivileged(action, context, perms); // 24 - perms?
+/*[ELSE] JAVA_SPEC_VERSION >= 24*/
checkPermsNPE(perms);
return doPrivileged(action, doPrivilegedWithCombinerHelper(context), perms);
+/*[ENDIF] JAVA_SPEC_VERSION >= 24*/
+
}
/**
@@ -989,7 +1021,9 @@ public static T doPrivileged(PrivilegedExceptionAction action,
throws PrivilegedActionException
{
try {
+/*[IF JAVA_SPEC_VERSION < 24]*/
checkPermsNPE(perms);
+/*[ENDIF] JAVA_SPEC_VERSION < 24 */
T result = action.run();
keepalive(context);
keepalive(perms);
@@ -1029,10 +1063,15 @@ public static T doPrivilegedWithCombiner(PrivilegedExceptionAction action
AccessControlContext context, Permission... perms)
throws PrivilegedActionException
{
+/*[IF JAVA_SPEC_VERSION >= 24]*/
+ return doPrivileged(action, context, perms);
+/*[ELSE] JAVA_SPEC_VERSION >= 24 */
checkPermsNPE(perms);
return doPrivileged(action, doPrivilegedWithCombinerHelper(context), perms);
+/*[ENDIF] JAVA_SPEC_VERSION >= 24 */
}
+/*[IF JAVA_SPEC_VERSION < 24]*/
/**
* Helper method to construct an AccessControlContext for doPrivilegedWithCombiner methods.
*
@@ -1052,5 +1091,6 @@ private static AccessControlContext doPrivilegedWithCombinerHelper(AccessControl
}
return fixedContext;
}
+/*[ENDIF] JAVA_SPEC_VERSION < 24*/
}
diff --git a/runtime/jcl/common/java_lang_Class.cpp b/runtime/jcl/common/java_lang_Class.cpp
index fb26b2f1232..cc5df1d0774 100644
--- a/runtime/jcl/common/java_lang_Class.cpp
+++ b/runtime/jcl/common/java_lang_Class.cpp
@@ -56,9 +56,11 @@ typedef enum {
#define STACK_WALK_STATE_FULL_DOPRIVILEGED (void *)3
static UDATA isPrivilegedFrameIterator(J9VMThread * currentThread, J9StackWalkState * walkState);
+#if JAVA_SPEC_VERSION < 24
static UDATA isPrivilegedFrameIteratorGetAccSnapshot(J9VMThread * currentThread, J9StackWalkState * walkState);
static UDATA frameIteratorGetAccSnapshotHelper(J9VMThread * currentThread, J9StackWalkState * walkState, j9object_t acc, j9object_t perm);
static j9object_t storePDobjectsHelper(J9VMThread* vmThread, J9Class* arrayClass, J9StackWalkState* walkState, j9object_t contextObject, U_32 arraySize, UDATA framesWalked, I_32 startPos, BOOLEAN dupCallerPD);
+#endif /* JAVA_SPEC_VERSION < 24 */
static BOOLEAN checkInnerClassHelper(J9Class* declaringClass, J9Class* declaredClass);
jobject JNICALL
@@ -1201,6 +1203,7 @@ Java_java_lang_Class_permittedSubclassesImpl(JNIEnv *env, jobject cls)
return permittedSubclassesHelper(env, cls);
}
+#if JAVA_SPEC_VERSION < 24
static UDATA
frameIteratorGetAccSnapshotHelper(J9VMThread * currentThread, J9StackWalkState * walkState, j9object_t acc, j9object_t perm)
{
@@ -1423,13 +1426,11 @@ Java_java_security_AccessController_getAccSnapshot(JNIEnv* env, jclass jsAccessC
if (NULL != vmThread->currentException) {
goto _walkStateUninitialized;
}
-#if JAVA_SPEC_VERSION < 24
/* AccessControlContext is allocated in the same space as the thread, so no exception can occur */
contextObject = vmThread->threadObject;
if (NULL != contextObject) {
contextObject = J9VMJAVALANGTHREAD_INHERITEDACCESSCONTROLCONTEXT(vmThread, contextObject);
}
-#endif /* JAVA_SPEC_VERSION < 24 */
/* Walk the stack, caching the constant pools of the frames. */
walkState.skipCount = startingFrame + 1; /* skip this JNI frame as well */
walkState.userData1 = STACK_WALK_STATE_MAGIC; /* set to NULL when a limited doPrivileged frame is discovered */
@@ -1821,7 +1822,7 @@ storePDobjectsHelper(J9VMThread* vmThread, J9Class* arrayClass, J9StackWalkState
}
return arrayObject;
}
-
+#endif /* JAVA_SPEC_VERSION < 24 */
jobject JNICALL
Java_java_lang_Class_getNestHostImpl(JNIEnv *env, jobject recv)