RFR 8226465 [lworld][c1] javac fails if C1 is enabled
tobias.hartmann at oracle.com
Tue Jun 25 10:58:47 UTC 2019
the string in c1_LIR.cpp:1884 is wrong (should be "substitutability_check").
Otherwise this looks good to me!
On 22.06.19 02:51, Ioi Lam wrote:
> The bug is similar to some of my previous bugs :-(
> The problem is in the implementation of acmp substitutability. The code in
> c1_LIRGenerator.cpp has complex branches, where some registers are not written in
> some of the branches. C1's register allocation doesn't allow this.
> The fix is to move the branches into a low-level IR operation (OpNullFreeArrayCheck).
> This makes the register allocator happy.
> I also took this chance to optimize the x64 code a bit. Now the check for
> markOopDesc::always_locked_pattern is down to 5 instructions (from 9 before), with one
> fewer temp register.
> mov $0x405, %r10d
> and (%left), %r10d /* if need to check left */
> and (%right), %r10d /* if need to check right */
> cmp $0x405, $r10d
> jne L_oops_not_equal
> - Ioi
More information about the valhalla-dev