Withdrawn: CODETOOLS-7902931: JOL: Rework magic field offset accessor

Aleksey Shipilev shade at openjdk.java.net
Tue May 11 07:16:02 UTC 2021


On Mon, 10 May 2021 18:02:51 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

> See the bug report for discussion.
> 
> Basic sanity test:
> 
> 
> $ cat MyRecord.java
> record MyRecord(int x, int y) {}
> 
> 
> Current JDK 17 EA, out-of-box:
> 
> 
> $ java -jar jol-cli/target/jol-cli.jar internals -cp . MyRecord
> ...
> 
> java.lang.RuntimeException: Cannot get the field offset, try with -Djol.magicFieldOffset=true
> 	at org.openjdk.jol.vm.HotspotUnsafe.fieldOffset(HotspotUnsafe.java:455)
> 	at org.openjdk.jol.layouters.CurrentLayouter.layout(CurrentLayouter.java:70)
> 	at org.openjdk.jol.info.ClassLayout.parseInstance(ClassLayout.java:102)
> 	at org.openjdk.jol.info.ClassLayout.parseInstance(ClassLayout.java:85)
> 	at org.openjdk.jol.operations.ObjectInternals.runWith(ObjectInternals.java:51)
> 	at org.openjdk.jol.operations.ClasspathedOperation.run(ClasspathedOperation.java:76)
> 	at org.openjdk.jol.Main.main(Main.java:58)
> Caused by: java.lang.UnsupportedOperationException: can't get field offset on a record class: private final int MyRecord.x
> 	at jdk.unsupported/sun.misc.Unsafe.objectFieldOffset(Unsafe.java:648)
> 	at org.openjdk.jol.vm.HotspotUnsafe.fieldOffset(HotspotUnsafe.java:448)
> 	... 6 more
> 
> 
> Current JDK 17 EA, with `-Djol.magicFieldOffset=true`:
> 
> 
> $ java -Djol.magicFieldOffset=true -jar jol-cli/target/jol-cli.jar internals -cp . MyRecord
> ...
> 
> MyRecord object internals:
> OFF  SZ   TYPE DESCRIPTION               VALUE
>   0   8        (object header: mark)     0x0000000000000001 (non-biasable; age: 0)
>   8   4        (object header: class)    0x00218180
>  12   4    int MyRecord.x                0
>  16   4    int MyRecord.y                0
>  20   4        (object alignment gap)    
> Instance size: 24 bytes
> Space losses: 0 bytes internal + 4 bytes external = 4 bytes total

This pull request has been closed without being integrated.

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

PR: https://git.openjdk.java.net/jol/pull/16


More information about the jol-dev mailing list