< prev index next >
src/java.base/share/classes/jdk/internal/misc/InnocuousThread.java
Print this page
*** 96,107 ****
});
}
private InnocuousThread(ThreadGroup group, Runnable target, String name, ClassLoader tccl) {
super(group, target, name, 0L, false);
! UNSAFE.putObjectRelease(this, INHERITEDACCESSCONTROLCONTEXT, ACC);
! UNSAFE.putObjectRelease(this, CONTEXTCLASSLOADER, tccl);
}
@Override
public void setUncaughtExceptionHandler(UncaughtExceptionHandler x) {
// silently fail
--- 96,107 ----
});
}
private InnocuousThread(ThreadGroup group, Runnable target, String name, ClassLoader tccl) {
super(group, target, name, 0L, false);
! UNSAFE.putReferenceRelease(this, INHERITEDACCESSCONTROLCONTEXT, ACC);
! UNSAFE.putReferenceRelease(this, CONTEXTCLASSLOADER, tccl);
}
@Override
public void setUncaughtExceptionHandler(UncaughtExceptionHandler x) {
// silently fail
*** 118,129 ****
/**
* Drops all thread locals (and inherited thread locals).
*/
public final void eraseThreadLocals() {
! UNSAFE.putObject(this, THREAD_LOCALS, null);
! UNSAFE.putObject(this, INHERITABLE_THREAD_LOCALS, null);
}
// ensure run method is run only once
private volatile boolean hasRun;
--- 118,129 ----
/**
* Drops all thread locals (and inherited thread locals).
*/
public final void eraseThreadLocals() {
! UNSAFE.putReference(this, THREAD_LOCALS, null);
! UNSAFE.putReference(this, INHERITABLE_THREAD_LOCALS, null);
}
// ensure run method is run only once
private volatile boolean hasRun;
*** 156,169 ****
(tk, "contextClassLoader");
long tg = UNSAFE.objectFieldOffset(tk, "group");
long gp = UNSAFE.objectFieldOffset(gk, "parent");
ThreadGroup group = (ThreadGroup)
! UNSAFE.getObject(Thread.currentThread(), tg);
while (group != null) {
! ThreadGroup parent = (ThreadGroup)UNSAFE.getObject(group, gp);
if (parent == null)
break;
group = parent;
}
final ThreadGroup root = group;
--- 156,169 ----
(tk, "contextClassLoader");
long tg = UNSAFE.objectFieldOffset(tk, "group");
long gp = UNSAFE.objectFieldOffset(gk, "parent");
ThreadGroup group = (ThreadGroup)
! UNSAFE.getReference(Thread.currentThread(), tg);
while (group != null) {
! ThreadGroup parent = (ThreadGroup)UNSAFE.getReference(group, gp);
if (parent == null)
break;
group = parent;
}
final ThreadGroup root = group;
< prev index next >