< 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 >