int offset) throws InlinePragma { return alignAllocation(region, alignment, offset, MIN_ALIGNMENT, true);
int offset, int knownAlignment, boolean fillAlignmentGap) throws InlinePragma { if (VM.VERIFY_ASSERTIONS) { VM.assertions._assert(knownAlignment >= MIN_ALIGNMENT); VM.assertions._assert(MIN_ALIGNMENT >= BYTES_IN_INT); VM.assertions._assert(!(fillAlignmentGap && region.isZero())); VM.assertions._assert(alignment <= MAX_ALIGNMENT); VM.assertions._assert(offset >= 0); VM.assertions._assert(region.toWord().and(Word.fromIntSignExtend(MIN_ALIGNMENT-1)).isZero()); VM.assertions._assert((alignment & (MIN_ALIGNMENT - 1)) == 0); VM.assertions._assert((offset & (MIN_ALIGNMENT - 1)) == 0); }   if (alignment <= knownAlignment || MAX_ALIGNMENT <= MIN_ALIGNMENT) return region;   Word mask = Word.fromIntSignExtend(alignment - 1); Word negOff = Word.fromIntSignExtend(-offset); Offset delta = negOff.minus(region.toWord()).and(mask).toOffset();  if (fillAlignmentGap && ALIGNMENT_VALUE != 0) { if ((MAX_ALIGNMENT - MIN_ALIGNMENT) == BYTES_IN_WORD) {  if (delta.toInt() == (BYTES_IN_WORD)) { region.store(Word.fromInt(ALIGNMENT_VALUE)); region = region.plus(delta); return region; } } else { while (delta.toInt() >= (BYTES_IN_WORD)) { region.store(Word.fromInt(ALIGNMENT_VALUE)); region = region.plus(BYTES_IN_WORD); delta = delta.minus(BYTES_IN_WORD); } } }  return region.plus(delta);
  final public static Address alignAllocation(Address region, int alignment,                                             int offset)     throws InlinePragma {    return alignAllocation(region, alignment, offset, MIN_ALIGNMENT, true);  }