src/java.base/share/classes/sun/misc/InnocuousThread.java
Print this page
rev 12972 : 8140606: Update library code to use internal Unsafe
Reviewed-by: duke
*** 34,44 ****
/**
* A thread that has no permissions, is not a member of any user-defined
* ThreadGroup and supports the ability to erase ThreadLocals.
*/
public final class InnocuousThread extends ManagedLocalsThread {
! private static final Unsafe UNSAFE;
private static final ThreadGroup INNOCUOUSTHREADGROUP;
private static final AccessControlContext ACC;
private static final long INHERITEDACCESSCONTROLCONTEXT;
private static final long CONTEXTCLASSLOADER;
--- 34,44 ----
/**
* A thread that has no permissions, is not a member of any user-defined
* ThreadGroup and supports the ability to erase ThreadLocals.
*/
public final class InnocuousThread extends ManagedLocalsThread {
! private static final jdk.internal.misc.Unsafe UNSAFE;
private static final ThreadGroup INNOCUOUSTHREADGROUP;
private static final AccessControlContext ACC;
private static final long INHERITEDACCESSCONTROLCONTEXT;
private static final long CONTEXTCLASSLOADER;
*** 90,100 ****
ACC = new AccessControlContext(new ProtectionDomain[] {
new ProtectionDomain(null, null)
});
// Find and use topmost ThreadGroup as parent of new group
! UNSAFE = Unsafe.getUnsafe();
Class<?> tk = Thread.class;
Class<?> gk = ThreadGroup.class;
INHERITEDACCESSCONTROLCONTEXT = UNSAFE.objectFieldOffset
(tk.getDeclaredField("inheritedAccessControlContext"));
--- 90,100 ----
ACC = new AccessControlContext(new ProtectionDomain[] {
new ProtectionDomain(null, null)
});
// Find and use topmost ThreadGroup as parent of new group
! UNSAFE = jdk.internal.misc.Unsafe.getUnsafe();
Class<?> tk = Thread.class;
Class<?> gk = ThreadGroup.class;
INHERITEDACCESSCONTROLCONTEXT = UNSAFE.objectFieldOffset
(tk.getDeclaredField("inheritedAccessControlContext"));