[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