[8u] RFR: JDK-8253036: Support building the Zero assembler port on AArch64

Aleksey Shipilev shade at redhat.com
Thu Sep 17 10:20:23 UTC 2020


On 9/17/20 11:39 AM, Andrew Haley wrote:
> On 16/09/2020 16:24, Aleksey Shipilev wrote:
>   > On 9/16/20 5:10 PM, Andrew Hughes wrote:
>   >> On 12:22 Wed 16 Sep     , Aleksey Shipilev wrote:
>   >>> On 9/16/20 8:27 AM, Andrew Hughes wrote:
>   >>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8253036
>   >>>> Webrev: https://cr.openjdk.java.net/~andrew/openjdk8/8253036/webrev.01/
>   >>>
>   >>> That's it, no more changes required for Zero?
>   >>
>   >> I was surprised too. It seems some required configure/JDK changes got
>   >> integrated into 8u already.
>   >
>   > Okay, looks fine for me then!
>   >
>   > I have also ran bootcycle-images with this patch on AArch64 without problems.
> 
> I wouldn't bet on the atomics being correct. It'd be nice to have a
> jcstress run. Not that we expect anyone to actually use zero on
> AArch64, but it'd be a very useful sanity check.

Oh. A few tests have failed:

   [FAILED] o.o.j.t.atomics.longs.AtomicLongPairwiseTests.IncAndGet_CAS
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_boolean_double
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_boolean_double
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_boolean_double
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_boolean_double
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_byte_double
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_byte_long
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_short_double
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_short_long
   [FAILED] o.o.j.t.memeffects.basic.volatiles.volatile_short_long

The sample test that fails:

@JCStressTest
@Outcome(id = "0, 0", expect = Expect.ACCEPTABLE, desc = "Seeing default guard, can see any value")
@Outcome(id = "0, 42", expect = Expect.ACCEPTABLE, desc = "Seeing default guard, can see any value")
@Outcome(id = "42, 42", expect = Expect.ACCEPTABLE, desc = "Seeing set guard, seeing the updated value")
@Outcome(id = "42, 0", expect = Expect.FORBIDDEN, desc = "Seeing set guard, not seeing the updated 
value")
@State
public class volatile_short_long {

     volatile short f;
     public long a;

     @Actor
     public void actor1(SJ_Result r) {
         a = 42L;
         f = 42;
     }

     @Actor
     public void actor2(SJ_Result r) {
         r.r1 = f; // observes 42 here
         r.r2 = a; // observes "0" here, FAIL
     }

}

-- 
Thanks,
-Aleksey



More information about the jdk8u-dev mailing list