RFR: 8295657: SA: Allow larger object alignments

Thomas Stuefe stuefe at openjdk.org
Wed Oct 19 13:06:31 UTC 2022


On Wed, 19 Oct 2022 12:04:49 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

> Found this when working on JOL support ([CODETOOLS-7903364](https://bugs.openjdk.org/browse/CODETOOLS-7903364)). If you try to attach to VM running with -XX:ObjectAlignmentInBytes=32, then SA would fail with:
> 
> 
> Caused by: java.lang.RuntimeException: Object alignment 32 not yet supported
> at jdk.hotspot.agent/sun.jvm.hotspot.runtime.VM.<init>(VM.java:510)
> at jdk.hotspot.agent/sun.jvm.hotspot.runtime.VM.initialize(VM.java:544)
> at jdk.hotspot.agent/sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:444)
> 
> 
> This code was added by [JDK-6916623](https://bugs.openjdk.org/browse/JDK-6916623), but I don't see a reason why it should only handle 8 and 16 byte alignment.
> 
> Additional testing:
>  - [x] New regression test
>  - [x] Linux x86_64 fastdebug `serviceability/sa`
>     - default
>     - with `-XX:ObjectAlignmentInBytes=16`
>     - with `-XX:ObjectAlignmentInBytes=32`
>     - with `-XX:ObjectAlignmentInBytes=64`
>     - with `-XX:ObjectAlignmentInBytes=128`
>     - with `-XX:ObjectAlignmentInBytes=256`

Looks fine. Curious, how well are all these alignments tested? E.g. do they work with all GCs?

test/hotspot/jtreg/serviceability/sa/TestObjectAlignment.java line 84:

> 82:         SATestUtils.skipIfCannotAttach(); // throws SkippedException if attach not expected to work.
> 83:         if (args == null || args.length == 0) {
> 84:             for (int align = 8; align <= 256; align *= 2) {

Alternatively, no loop, six test sections, hand in alignment via program arg, and be able to do all this in parallel?

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

Marked as reviewed by stuefe (Reviewer).

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


More information about the serviceability-dev mailing list