[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