< prev index next >

src/java.base/share/classes/java/lang/ClassValue.java

Print this page
@  rev 60626 : 8251397: NPE on ClassValue.ClassValueMap.cacheArray
|  Reviewed-by: aph
~

*** 27,36 **** --- 27,38 ---- import java.util.WeakHashMap; import java.lang.ref.WeakReference; import java.util.concurrent.atomic.AtomicInteger; + import jdk.internal.misc.Unsafe; + import static java.lang.ClassValue.ClassValueMap.probeHomeLocation; import static java.lang.ClassValue.ClassValueMap.probeBackupLocations; /** * Lazily associate a computed value with (potentially) every type.
*** 409,423 **** --- 411,429 ---- * It would be pointless to make this much smaller than the Class and ClassValueMap objects themselves. * Must be a power of 2. */ private static final int INITIAL_ENTRIES = 32; + private static final Unsafe UNSAFE = Unsafe.getUnsafe(); + /** Build a backing map for ClassValues. * Also, create an empty cache array and install it on the class. */ ClassValueMap() { sizeCache(INITIAL_ENTRIES); + // Trailing release fence to get safe publication + UNSAFE.storeFence(); } Entry<?>[] getCache() { return cacheArray; } /** Initiate a query. Store a promise (placeholder) if there is no value yet. */
< prev index next >