RFR: C1 fixes to matrix barriers

Roman Kennke rkennke at redhat.com
Thu Mar 23 20:03:13 UTC 2017


This fixes a bunch of issues with the matrix barriers in c1:

- it needs longConst() for stride, otherwise the register sizes do not
match in the mult
- AArch64 macro assembler can't work with 64bit immediates in some math
ops, I changed it to explicitely load into regs first. X86 moves it to a
reg anyway.
- AAarch64 can't store a constant 1! I #ifdef'd it to load into register
first.

Notice that this doesn't make matrix barriers generally work on aarch64,
we totally lack the assembler/interpreter impl of the matrix barriers on
AArch64.

I also added some partial-gc test invocations to GCOld and GCBasher
(which first showed the above bugs).

http://cr.openjdk.java.net/~rkennke/c1matrixbarrier/webrev.00/
<http://cr.openjdk.java.net/%7Erkennke/c1matrixbarrier/webrev.00/>

Roman





More information about the shenandoah-dev mailing list