[aarch64-port-dev ] Guarantee failures since 8144028: Use AArch64 bit-test instructions in C2

Edward Nevill edward.nevill at gmail.com
Tue Dec 8 18:22:32 UTC 2015


Hi,

Since "8144028: Use AArch64 bit-test instructions in C2" I have been seeing occasional guarantee failures of the form.

#  Internal Error (assembler_aarch64.hpp:223), pid=4241, tid=4595
#  guarantee(chk == -1 || chk == 0) failed: Field too big for insn

These are being generated by the following call from pd_patch_instruction_size in macroAssembler_aarch64.cpp

    // Test & branch (immediate)
    Instruction_aarch64::spatch(branch, 18, 5, offset);

The problem is that test and branch instructions only have a 14 bit offset giving a range of +/- 32Kb which is not sufficient for large C2 methods.

What can we do about this? It seems a shame to backout this optimization but I cannot see any easy way around it.

All the best,
Ed.




More information about the aarch64-port-dev mailing list