8068054: AARCH64: Assembler interpreter, shared runtime

Andrew Haley aph at redhat.com
Wed Jan 21 09:15:00 UTC 2015


On 20/01/15 19:51, Dean Long wrote:
> I believe offset_unit refers to the location of the relocation 
> (typically a 4-byte
> machine instruction) and not the size of the reloc data, so you may want to
> try changing to "4" in the future.

Umm, really?  I looked at the code and saw

#ifdef ASSERT
relocInfo::relocInfo(relocType t, int off, int f) {
  assert(t != data_prefix_tag, "cannot build a prefix this way");
  assert((t & type_mask) == t, "wrong type");
  assert((f & format_mask) == f, "wrong format");
  assert(off >= 0 && off < offset_limit(), "offset out off bounds");
  assert((off & (offset_unit-1)) == 0, "misaligned offset");
  (*this) = relocInfo(t, RAW_BITS, off, f);
}
#endif

which suggested to me that the offset must be aligned by offset_unit.
Am I reading this wrongly?

Andrew.



More information about the hotspot-dev mailing list