RFR (S) 8185296: java_lang_Class::array_klass should be array_klass_acquire

Erik Österlund erik.osterlund at oracle.com
Tue Jul 25 18:16:14 UTC 2017


Mmm yes - safe printing is the best kind of printing.

Looks good. Thank you for fixing this.

/Erik

> On 25 Jul 2017, at 19:51, coleen.phillimore at oracle.com wrote:
> 
> For consistency with https://bugs.openjdk.java.net/browse/JDK-8185296 should have made array_klass use load_acquire.
> 
> open webrev at http://cr.openjdk.java.net/~coleenp/8185296.01/webrev
> bug link https://bugs.openjdk.java.net/browse/JDK-8185296
> 
> Tested with inserted (now removed) print for the component mirror. Eg:
> 
> printing mirror for component mirror:
> java.lang.Class
> {0x00000000f3a25be8} - klass: 'java/lang/Class'
> - ---- fields (total size 15 words):
> - private volatile transient strict 'cachedConstructor' 'Ljava/lang/reflect/Constructor;' @12  NULL (0 0)
> - private volatile transient strict 'newInstanceCallerCache' 'Ljava/lang/Class;' @16  NULL (0 f3a26948)
> - private transient 'name' 'Ljava/lang/String;' @20 "jdk.tools.jlink.internal.ImageLocationWriter"{0x00000000f3a26948} (f3a26948 eab3f768)
> - private transient 'module' 'Ljava/lang/Module;' @24  a 'java/lang/Module'{0x00000000eab3f768} (eab3f768 eaaa0000)
> - private final 'classLoader' 'Ljava/lang/ClassLoader;' @28  a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x00000000eaaa0000} (eaaa0000 eab4d438)
> - private transient 'packageName' 'Ljava/lang/String;' @32 "jdk.tools.jlink.internal"{0x00000000eab4d438} (eab4d438 0)
> - private final strict 'componentType' 'Ljava/lang/Class;' @36 NULL (0 0)
> - private volatile transient strict 'reflectionData' 'Ljava/lang/ref/SoftReference;' @40  NULL (0 0)
> - private volatile transient 'genericInfo' 'Lsun/reflect/generics/repository/ClassRepository;' @44  NULL (0 0)
> - private volatile transient strict 'enumConstants' '[Ljava/lang/Object;' @48  NULL (0 0)
> - private volatile transient strict 'enumConstantDirectory' 'Ljava/util/Map;' @52  NULL (0 0)
> - private volatile transient 'annotationData' 'Ljava/lang/Class$AnnotationData;' @56  NULL (0 0)
> - private volatile transient 'annotationType' 'Lsun/reflect/annotation/AnnotationType;' @60  NULL (0 0)
> - transient 'classValueMap' 'Ljava/lang/ClassValue$ClassValueMap;' @64  NULL (0 eab49d08)
> - private volatile transient 'classRedefinedCount' 'I' @96  0
> - signature: Ljdk/tools/jlink/internal/ImageLocationWriter;
> - fake entry for mirror: 'jdk/tools/jlink/internal/ImageLocationWriter'
> - fake entry for array: 'jdk/tools/jlink/internal/ImageLocationWriter'[]   <===   HERE
> - fake entry for oop_size: 15
> - fake entry for static_oop_field_count: 0
> - static final synthetic '$assertionsDisabled' 'Z' @112  true
> 
> 
> Thanks,
> Coleen
> 
> 



More information about the hotspot-dev mailing list