[aarch64-port-dev ] JCStress Failure -WCAS_WCAS
Stuart Monteith
stuart.monteith at linaro.org
Fri Sep 16 15:49:34 UTC 2016
Thanks for that Aleksey - I'm new to this OpenJDK thing, so that's all
good to know.
I do wonder what the case is for "-XX:-RestrictContended" if Jigsaw
restricts access anyway.
On 16 September 2016 at 16:02, Aleksey Shipilev <shade at redhat.com> wrote:
> Hi Stuart,
>
> On 09/16/2016 02:52 PM, Stuart Monteith wrote:
>> I've have tests-chapter-1a compiling by generating a jar to use
>> "--add-patch" against so that @sun.misc.Contended will apparently be
>> in the jdk.unsupported module, but of course, that's not the problem
>> once you actually try to run.
>
> Yes, but I would prefer to have all these little Jigsaw pummeling
> options out, if possible.
>
>> Your changes look good to me, with the exception of the Padding. There
>> is an Aarch64 system that requires 128 bytes of padding to avoid
>> contention. If I interpret what you've written correctly, the booleans
>> you use for padding will be 64 bytes in length. Am I correct in
>> thinking booleans are 4 bytes in Hotspot fields?
>
> No. Booleans are 1-byte fields in HotSpot. But Padding plus two classes
> generates 16x16 = 256 booleans on each side of the protected field,
> which yields 256 bytes around it. See e.g.:
>
> $ java --add-exports java.base/jdk.internal.vm.annotation=ALL-UNNAMED
> -jar jol-cli.jar internals -cp tests-custom/target/jcstress.jar
> org.openjdk.jcstress.infra.results.CharResult1_jcstress
>
> org.openjdk.jcstress.infra.results.CharResult1_jcstress object internals:
> OFFSET SIZE TYPE DESCRIPTION VALUE
> 0 4 (object header) ...
> 4 4 (object header) ...
> 8 4 (object header) ...
> 12 2 char CharResult1.r1 \00
> 14 2 (alignment/padding gap) N/A
> 16 1 boolean CharResult1_jcstress_c2.p000 false
> 17 1 boolean CharResult1_jcstress_c2.p001 false
> 18 1 boolean CharResult1_jcstress_c2.p002 false
> ...
> 270 1 boolean CharResult1_jcstress_c2.p254 false
> 271 1 boolean CharResult1_jcstress_c2.p255 false
> 272 4 int CharResult1_jcstress_c1.trap 0
> 276 1 boolean CharResult1_jcstress.p000 false
> 277 1 boolean CharResult1_jcstress.p001 false
> ...
> 530 1 boolean CharResult1_jcstress.p254 false
> 531 1 boolean CharResult1_jcstress.p255 false
> 532 4 (loss due to the next object alignment)
> Instance size: 536 bytes
>
>
>> The @Contended flag has the correct behaviour as it can query the
>> appropriate granule size.
>
> Yes, I know about the benefits of @Contended. Alas, using it in
> compatible manner outside JDK is a nuisance. Granted, this is partially
> my own fault for not pressing this hard enough during the original
> development, but hey, I *was* suggesting java.util.concurrent.Contended
> :) Hierarchy trick is the next best thing.
>
> Thanks,
> -Aleksey
>
More information about the aarch64-port-dev
mailing list