RFR: 8308903: Print detailed info for Java objects in -Xlog:cds+map [v3]

Ioi Lam iklam at openjdk.org
Wed Jul 19 05:31:19 UTC 2023


> This PR adds detailed printing of oop information with `-Xlog:cds+map+oop=trace`, or simply `-Xlog:cds+map*=trace`. The information is useful for debugging contents of the CDS archived heap objects.
> 
> The output looks like `oopDesc::print_on(tty)`, but we need to print the pointers using the locations of the objects at runtime. The examples below show how a `String` references its `value` array.
> 
> Example with `-XX:-UseCompressedOops`:
> 
> 
> 0x00000000100001f0: @@ Object java.lang.String
> 0x00000000100001f0: 0000006ff6ab8d01 88d47c5b00010290 0000000000010000 0000000010000210
>  - klass: 'java/lang/String' 0x0000000800010290
>  - ---- fields (total size 4 words):
>  - private 'hash' 'I' @12 -1999340453 (0x88d47c5b)
>  - private final 'coder' 'B' @16 0 (0x00)
>  - private 'hashIsZero' 'Z' @17 false (0x00)
>  - injected 'flags' 'B' @18 1 (0x01)
>  - private final 'value' '[B' @24 0x0000000010000210 [B length: 6
> 0x0000000010000210: @@ Object [B length: 6
> 0x0000000010000210: 000000693b708001 00000006000024c8 0000574f5252414e
>  - klass: {type array byte} 0x00000008000024c8
>  - 0: 4e N
>  - 1: 41 A
>  - 2: 52 R
>  - 3: 52 R
>  - 4: 4f O
>  - 5: 57 W
> 
> 
> Example with `-XX:+UseCompressedOops`. Note that the narrorOop is also printed:
> 
> 
> 0x00000007ffc001b8: @@ Object (0xfff80037) java.lang.String
> 0x00000007ffc001b8: f6ab8d01 0000006f 00010290 88d47c5b 00010000 fff8003a
>  - klass: 'java/lang/String' 0x0000000800010290
>  - ---- fields (total size 3 words):
>  - private 'hash' 'I' @12 -1999340453 (0x88d47c5b)
>  - private final 'coder' 'B' @16 0 (0x00)
>  - private 'hashIsZero' 'Z' @17 false (0x00)
>  - injected 'flags' 'B' @18 1 (0x01)
>  - private final 'value' '[B' @20 0x00000007ffc001d0 (0xfff8003a) [B length: 6
> 0x00000007ffc001d0: @@ Object (0xfff8003a) [B length: 6
> 0x00000007ffc001d0: 3b708001 00000069 000024c8 00000006 5252414e 0000574f
>  - klass: {type array byte} 0x00000008000024c8
>  - 0: 4e N
>  - 1: 41 A
>  - 2: 52 R
>  - 3: 52 R
>  - 4: 4f O
>  - 5: 57 W

Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:

  added test case

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/14841/files
  - new: https://git.openjdk.org/jdk/pull/14841/files/14f3d15b..6a898268

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=14841&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=14841&range=01-02

  Stats: 384 lines in 2 files changed: 384 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/14841.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14841/head:pull/14841

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


More information about the hotspot-dev mailing list