< prev index next >

src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java

Print this page
rev 17358 : 8182487: Add Unsafe.objectFieldOffset(Class, String)
Reviewed-by: dsimms, twisti, bchristi, mgerdin

*** 3305,3323 **** return false; return true; } private static final Unsafe U = Unsafe.getUnsafe(); ! private static final long LOCKSTATE; ! static { ! try { ! LOCKSTATE = U.objectFieldOffset ! (TreeBin.class.getDeclaredField("lockState")); ! } catch (ReflectiveOperationException e) { ! throw new Error(e); ! } ! } } /* ----------------Table Traversal -------------- */ /** --- 3305,3316 ---- return false; return true; } private static final Unsafe U = Unsafe.getUnsafe(); ! private static final long LOCKSTATE ! = U.objectFieldOffset(TreeBin.class, "lockState"); } /* ----------------Table Traversal -------------- */ /**
*** 6379,6409 **** private static final long CELLVALUE; private static final int ABASE; private static final int ASHIFT; static { - try { SIZECTL = U.objectFieldOffset ! (ConcurrentHashMap.class.getDeclaredField("sizeCtl")); TRANSFERINDEX = U.objectFieldOffset ! (ConcurrentHashMap.class.getDeclaredField("transferIndex")); BASECOUNT = U.objectFieldOffset ! (ConcurrentHashMap.class.getDeclaredField("baseCount")); CELLSBUSY = U.objectFieldOffset ! (ConcurrentHashMap.class.getDeclaredField("cellsBusy")); CELLVALUE = U.objectFieldOffset ! (CounterCell.class.getDeclaredField("value")); ABASE = U.arrayBaseOffset(Node[].class); int scale = U.arrayIndexScale(Node[].class); if ((scale & (scale - 1)) != 0) throw new Error("array index scale not a power of two"); ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); - } catch (ReflectiveOperationException e) { - throw new Error(e); - } // Reduce the risk of rare disastrous classloading in first call to // LockSupport.park: https://bugs.openjdk.java.net/browse/JDK-8074773 Class<?> ensureLoaded = LockSupport.class; } --- 6372,6398 ---- private static final long CELLVALUE; private static final int ABASE; private static final int ASHIFT; static { SIZECTL = U.objectFieldOffset ! (ConcurrentHashMap.class, "sizeCtl"); TRANSFERINDEX = U.objectFieldOffset ! (ConcurrentHashMap.class, "transferIndex"); BASECOUNT = U.objectFieldOffset ! (ConcurrentHashMap.class, "baseCount"); CELLSBUSY = U.objectFieldOffset ! (ConcurrentHashMap.class, "cellsBusy"); CELLVALUE = U.objectFieldOffset ! (CounterCell.class, "value"); ABASE = U.arrayBaseOffset(Node[].class); int scale = U.arrayIndexScale(Node[].class); if ((scale & (scale - 1)) != 0) throw new Error("array index scale not a power of two"); ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); // Reduce the risk of rare disastrous classloading in first call to // LockSupport.park: https://bugs.openjdk.java.net/browse/JDK-8074773 Class<?> ensureLoaded = LockSupport.class; }
< prev index next >