< prev index next >
src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java
Print this page
rev 17358 : 8182487: Add Unsafe.objectFieldOffset(Class, String)
Reviewed-by: dsimms, twisti, bchristi, mgerdin
*** 1048,1081 ****
static final String BAD_RANGE = "bound must be greater than origin";
static final String BAD_SIZE = "size must be non-negative";
// Unsafe mechanics
private static final Unsafe U = Unsafe.getUnsafe();
! private static final long SEED;
! private static final long PROBE;
! private static final long SECONDARY;
! private static final long THREADLOCALS;
! private static final long INHERITABLETHREADLOCALS;
! private static final long INHERITEDACCESSCONTROLCONTEXT;
! static {
! try {
! SEED = U.objectFieldOffset
! (Thread.class.getDeclaredField("threadLocalRandomSeed"));
! PROBE = U.objectFieldOffset
! (Thread.class.getDeclaredField("threadLocalRandomProbe"));
! SECONDARY = U.objectFieldOffset
! (Thread.class.getDeclaredField("threadLocalRandomSecondarySeed"));
! THREADLOCALS = U.objectFieldOffset
! (Thread.class.getDeclaredField("threadLocals"));
! INHERITABLETHREADLOCALS = U.objectFieldOffset
! (Thread.class.getDeclaredField("inheritableThreadLocals"));
! INHERITEDACCESSCONTROLCONTEXT = U.objectFieldOffset
! (Thread.class.getDeclaredField("inheritedAccessControlContext"));
! } catch (ReflectiveOperationException e) {
! throw new Error(e);
! }
! }
/** Rarely-used holder for the second of a pair of Gaussians */
private static final ThreadLocal<Double> nextLocalGaussian =
new ThreadLocal<>();
--- 1048,1069 ----
static final String BAD_RANGE = "bound must be greater than origin";
static final String BAD_SIZE = "size must be non-negative";
// Unsafe mechanics
private static final Unsafe U = Unsafe.getUnsafe();
! private static final long SEED = U.objectFieldOffset
! (Thread.class, "threadLocalRandomSeed");
! private static final long PROBE = U.objectFieldOffset
! (Thread.class, "threadLocalRandomProbe");
! private static final long SECONDARY = U.objectFieldOffset
! (Thread.class, "threadLocalRandomSecondarySeed");
! private static final long THREADLOCALS = U.objectFieldOffset
! (Thread.class, "threadLocals");
! private static final long INHERITABLETHREADLOCALS = U.objectFieldOffset
! (Thread.class, "inheritableThreadLocals");
! private static final long INHERITEDACCESSCONTROLCONTEXT = U.objectFieldOffset
! (Thread.class, "inheritedAccessControlContext");
/** Rarely-used holder for the second of a pair of Gaussians */
private static final ThreadLocal<Double> nextLocalGaussian =
new ThreadLocal<>();
< prev index next >