oldValue = VM_Magic.prepareAddress(base, offset);
oldValue = VM_Magic.prepareAddress(VM_Magic.addressAsObject(addr), Offset.zero());
  public static final Address fetchAndSubAddressWithBound(Object base, int offset,                                                              int decrement, Address bound) throws InlinePragma {    Address oldValue, newValue;    if (VM.VerifyAssertions) VM._assert(decrement > 0);    do {      oldValue = VM_Magic.prepareAddress(base, offset);      newValue = oldValue.sub(decrement);      if (newValue.LT(bound)) return Address.max();    } while (!VM_Magic.attemptAddress(base, offset, oldValue, newValue));    return oldValue;  }