[aarch64-port-dev ] SPECjvm2008 derby gives SIGBUS with -XX:+TieredCompilation
Andrew Dinn
adinn at redhat.com
Tue Jan 21 02:57:57 PST 2014
On 21/01/14 10:32, Edward Nevill wrote:
How about those stlxr + branch insns:
> --- +Tiered compilation (failing case) ----
> . . .
> 0x0000007f712e98e8: ldaxr w8, [x0]
> 0x0000007f712e98ec: cmp w8, w2
> 0x0000007f712e98f0: cset x8, ne
> 0x0000007f712e98f4: b.ne 0x0000007f712e9900
> 0x0000007f712e98f8: stlxr w8, w9, [x0]
> 0x0000007f712e98fc: cbnz x8, 0x0000007f712e98e8
> --- -TieredCompilation (success case) ---
> . . .
> 0x0000007f8580a9b4: ldaxr w8, [x10]
> 0x0000007f8580a9b8: cmp w8, w14
> 0x0000007f8580a9bc: b.ne 0x0000007f8580a9d0
> 0x0000007f8580a9c0: stlxr w8, w12, [x10]
> 0x0000007f8580a9c4: cmp w8, wzr
> 0x0000007f8580a9c8: b.eq 0x0000007f8580a9d0
The first one uses a stlxr which sets w8 and then branches on x8
The second one uses a stlxr which sets w8, compares w8 against zr and
then branches on the resulting flag. So, will the first one not suffer a
spurious failure when the top half of x8 is non-zero? Whereas the second
one will always get the correct result?
regards,
Andrew Dinn
-----------
More information about the aarch64-port-dev
mailing list