< prev index next >
src/java.base/share/classes/jdk/internal/misc/InnocuousThread.java
Print this page
rev 17358 : 8182487: Add Unsafe.objectFieldOffset(Class, String)
Reviewed-by: dsimms, twisti, bchristi, mgerdin
*** 133,153 ****
// Find and use topmost ThreadGroup as parent of new group
UNSAFE = jdk.internal.misc.Unsafe.getUnsafe();
Class<?> tk = Thread.class;
Class<?> gk = ThreadGroup.class;
! THREAD_LOCALS = UNSAFE.objectFieldOffset
! (tk.getDeclaredField("threadLocals"));
INHERITABLE_THREAD_LOCALS = UNSAFE.objectFieldOffset
! (tk.getDeclaredField("inheritableThreadLocals"));
INHERITEDACCESSCONTROLCONTEXT = UNSAFE.objectFieldOffset
! (tk.getDeclaredField("inheritedAccessControlContext"));
CONTEXTCLASSLOADER = UNSAFE.objectFieldOffset
! (tk.getDeclaredField("contextClassLoader"));
! long tg = UNSAFE.objectFieldOffset(tk.getDeclaredField("group"));
! long gp = UNSAFE.objectFieldOffset(gk.getDeclaredField("parent"));
ThreadGroup group = (ThreadGroup)
UNSAFE.getObject(Thread.currentThread(), tg);
while (group != null) {
ThreadGroup parent = (ThreadGroup)UNSAFE.getObject(group, gp);
--- 133,152 ----
// Find and use topmost ThreadGroup as parent of new group
UNSAFE = jdk.internal.misc.Unsafe.getUnsafe();
Class<?> tk = Thread.class;
Class<?> gk = ThreadGroup.class;
! THREAD_LOCALS = UNSAFE.objectFieldOffset(tk, "threadLocals");
INHERITABLE_THREAD_LOCALS = UNSAFE.objectFieldOffset
! (tk, "inheritableThreadLocals");
INHERITEDACCESSCONTROLCONTEXT = UNSAFE.objectFieldOffset
! (tk, "inheritedAccessControlContext");
CONTEXTCLASSLOADER = UNSAFE.objectFieldOffset
! (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);
< prev index next >