Assert._assert((region.toInt() & (MIN_ALIGNMENT-1)) == 0);
Assert._assert(region.toWord().and(Word.fromIntSignExtend(MIN_ALIGNMENT-1)).isZero());
  final public static Address alignAllocation(Address region, int alignment,                                              int offset, int knownAlignment)    throws InlinePragma {    if (Assert.VERIFY_ASSERTIONS) {      Assert._assert(knownAlignment >= MIN_ALIGNMENT);      Assert._assert(MIN_ALIGNMENT >= BYTES_IN_INT);      Assert._assert(alignment <= MAX_ALIGNMENT);      Assert._assert(offset >= 0);      Assert._assert((region.toInt() & (MIN_ALIGNMENT-1)) == 0);      Assert._assert((alignment & (MIN_ALIGNMENT-1)) == 0);      Assert._assert((offset & (MIN_ALIGNMENT-1)) == 0);    }    // No alignment ever required.    if (alignment <= knownAlignment || MAX_ALIGNMENT <= MIN_ALIGNMENT)      return region;     // May require an alignment    Word mask  = Word.fromIntSignExtend(alignment-1);    Word negOff= Word.fromIntSignExtend(-offset);    Offset delta = negOff.sub(region.toWord()).and(mask).toOffset();    return region.add(delta);  }