RFR: 8344913: Improve -Xlog:cds+map+oop logging for Java mirrors

Ioi Lam iklam at openjdk.org
Sun Nov 24 00:51:31 UTC 2024


The following information is added to the `-Xlog:cds+map+oop` output for examining the `java/lang/Class` oop instances inside the AOT cache:

- Print the name of the class
- Print the value of the static fields- 
- Print the  resolved_reference_array for this class, so it's easy to see what constant pool entries (for Lambdas, etc) are resolved.

Below is the new and modified output vs the previous version:


- 0x00000000ffe7af28: @@ Object (0xffe7af28) java.lang.Class
+ 0x00000000ffe7af28: @@ Object (0xffe7af28) java.lang.Class Ljava/lang/System;
  0x00000000ffe7af28:   40b7b001 0000035b 001bb638 00000000 001a9b90 00000008 00000000 00000000   ...@[...8.......................
  0x00000000ffe7af48:   00000013 0000000a 00000000 00000000 00000000 00000000 00000000 00000000   ................................
  0x00000000ffe7af68:   00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   ................................
  0x00000000ffe7af88:   00000000 00000000 00000000 fff04c58 00000000 00000000 00000000 00000000   ............XL..................
  0x00000000ffe7afa8:   00000000 00000000 00000000 00000000 00000000 00000000                     ........................
   - klass: 'java/lang/Class' 0x00000008001bb638
   - fields (19 words):
   - private volatile transient 'classRedefinedCount' 'I' @12  0 (0x00000000)
   - injected 'klass' 'J' @16 0x00000008001a9b90 (marked metadata pointer @0x00000000ffe7af38 )
   - injected 'array_klass' 'J' @24  0 (0x0000000000000000)
   - injected 'oop_size' 'I' @32  19 (0x00000013)
   - injected 'static_oop_field_count' 'I' @36  10 (0x0000000a)
   - private volatile transient 'cachedConstructor' 'Ljava/lang/reflect/Constructor;' @40 null
   - private transient 'name' 'Ljava/lang/String;' @44 null
   - private transient 'module' 'Ljava/lang/Module;' @48 null
   - private final 'classLoader' 'Ljava/lang/ClassLoader;' @52 null
   - private transient 'classData' 'Ljava/lang/Object;' @56 null
   - private transient 'signers' '[Ljava/lang/Object;' @60 null
   - private transient 'packageName' 'Ljava/lang/String;' @64 null
   - private final 'componentType' 'Ljava/lang/Class;' @68 null
   - private volatile transient 'reflectionData' 'Ljava/lang/ref/SoftReference;' @72 null
   - private volatile transient 'genericInfo' 'Lsun/reflect/generics/repository/ClassRepository;' @76 null
   - private volatile transient 'enumConstants' '[Ljava/lang/Object;' @80 null
   - private volatile transient 'enumConstantDirectory' 'Ljava/util/Map;' @84 null
   - private volatile transient 'annotationData' 'Ljava/lang/Class$AnnotationData;' @88 null
   - private volatile transient 'annotationType' 'Lsun/reflect/annotation/AnnotationType;' @92 null
   - transient 'classValueMap' 'Ljava/lang/ClassValue$ClassValueMap;' @96 null
   - injected 'protection_domain' 'Ljava/lang/Object;' @100 null
   - injected 'source_file' 'Ljava/lang/Object;' @104 null
   - injected '<init_lock>' 'Ljava/lang/Object;' @108 0x00000000fff04c58 (0xfff04c58) [I length: 0
+  - signature: Ljava/lang/System;
+  - archived_resolved_references: 0x00000000ffe31b18 (0xffe31b18) [Ljava.lang.Object; length: 29
+ - ---- static fields (10):
+  - public static final 'in' 'Ljava/io/InputStream;' @112 null
+  - public static final 'out' 'Ljava/io/PrintStream;' @116 null
+  - public static final 'err' 'Ljava/io/PrintStream;' @120 null
+  - private static 'initialIn' 'Ljava/io/InputStream;' @124 null
+  - private static 'initialErr' 'Ljava/io/PrintStream;' @128 null
+  - private static 'notSupportedJnuEncoding' 'Ljava/lang/String;' @132 null
+  - private static volatile 'cons' 'Ljava/io/Console;' @136 null
+  - private static 'props' 'Ljava/util/Properties;' @140 null
+  - private static 'lineSeparator' 'Ljava/lang/String;' @144 null
+  - static 'bootLayer' 'Ljava/lang/ModuleLayer;' @148 null

-------------

Commit messages:
 - 8344913: Improve -Xlog:cds+map+oop logging for Java mirrors

Changes: https://git.openjdk.org/jdk/pull/22345/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22345&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8344913
  Stats: 74 lines in 1 file changed: 68 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jdk/pull/22345.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22345/head:pull/22345

PR: https://git.openjdk.org/jdk/pull/22345


More information about the hotspot-runtime-dev mailing list