[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