[aarch64-port-dev ] Wrong memory transfer size in TemplateInterpreterGenerator::generate_throw_exception
D.Sturm
D.Sturm42 at gmail.com
Sat Dec 14 10:17:45 PST 2013
In TemplateInterpreterGenerator::generate_throw_exception there's the
following code:
__ ldr(r3, Address(rthread, JavaThread::popframe_condition_offset()));
__ orr(r3, r3, JavaThread::popframe_processing_bit);
__ str(r3, Address(rthread, JavaThread::popframe_condition_offset()));
but _popframe_condition is an int (defined in thread.hpp) and only
guaranteed to be aligned on a 4-byte boundary. This leads to problems if
the field is not accidentally aligned to 8-byte, since the offset is too
large to be loaded unscaled.
The fix should be to replace the instructions with the word-sized version,
if I don't completely misunderstand the problem.
More information about the aarch64-port-dev
mailing list