public static void aligned32Copy(Address dst, Address src, int numBytes) throws InlinePragma { aligned32Copy(dst, src, Offset.fromIntSignExtend(numBytes));
public static void aligned32Copy(Address dst, Address src, Offset numBytes) throws InlinePragma { if (USE_NATIVE && numBytes.sGT(Offset.fromIntSignExtend(NATIVE_THRESHOLD))) { memcopy(dst, src, numBytes.toWord().toExtent()); } else { if (VM.BuildFor64Addr) { Word wordMask = Word.one().lsh(LOG_BYTES_IN_ADDRESS).sub(Word.one()); Word srcAlignment = src.toWord().and(wordMask); if (srcAlignment.EQ(dst.toWord().and(wordMask))) { Offset i = Offset.zero(); if (srcAlignment.EQ(Word.fromIntZeroExtend(BYTES_IN_INT))) { dst.store(src.loadInt(i), i); i = i.add(BYTES_IN_INT); } Word endAlignment = srcAlignment.add(numBytes).and(Word.fromIntSignExtend(BYTES_IN_ADDRESS-1)); numBytes = numBytes.sub(endAlignment.toOffset()); for (; i.sLT(numBytes); i = i.add(BYTES_IN_ADDRESS)) { dst.store(src.loadWord(i), i); } if (!endAlignment.isZero()) { dst.store(src.loadInt(i), i); } return; } }  for (Offset i= Offset.zero(); i.sLT(numBytes); i = i.add(BYTES_IN_INT)) { dst.store(src.loadInt(i), i); } }
  public static void aligned32Copy(Address dst, Address src, int numBytes) throws InlinePragma {    aligned32Copy(dst, src, Offset.fromIntSignExtend(numBytes));  }