< prev index next >

src/java.base/share/classes/java/io/ObjectStreamClass.java

Print this page

        

*** 23,32 **** --- 23,33 ---- * questions. */ package java.io; + import java.lang.invoke.VarHandle; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; import java.lang.reflect.Constructor;
*** 170,180 **** /** number of non-primitive fields */ private int numObjFields; /** reflector for setting/getting serializable field values */ private FieldReflector fieldRefl; /** data layout of serialized objects described by this class desc */ ! private volatile ClassDataSlot[] dataLayout; /** serialization-appropriate constructor, or null if none */ private Constructor<?> cons; /** class-defined writeObject method, or null if none */ private Method writeObjectMethod; --- 171,181 ---- /** number of non-primitive fields */ private int numObjFields; /** reflector for setting/getting serializable field values */ private FieldReflector fieldRefl; /** data layout of serialized objects described by this class desc */ ! private ClassDataSlot[] dataLayout; /** serialization-appropriate constructor, or null if none */ private Constructor<?> cons; /** class-defined writeObject method, or null if none */ private Method writeObjectMethod;
*** 1193,1203 **** * ClassDataSlot contains a reference to this descriptor. */ ClassDataSlot[] getClassDataLayout() throws InvalidClassException { // REMIND: synchronize instead of relying on volatile? if (dataLayout == null) { ! dataLayout = getClassDataLayout0(); } return dataLayout; } private ClassDataSlot[] getClassDataLayout0() --- 1194,1206 ---- * ClassDataSlot contains a reference to this descriptor. */ ClassDataSlot[] getClassDataLayout() throws InvalidClassException { // REMIND: synchronize instead of relying on volatile? if (dataLayout == null) { ! ClassDataSlot[] slots = getClassDataLayout0(); ! VarHandle.fullFence(); ! dataLayout = slots; } return dataLayout; } private ClassDataSlot[] getClassDataLayout0()
< prev index next >