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"));