newValue = oldValue | PURPLE_MASK | BUFFERED_MASK;
newValue = (oldValue & ~BASE_COLOR_MASK) | PURPLE | BUFFERED_MASK;
  public static boolean makePurple(Object object)    throws VM_PragmaUninterruptible, VM_PragmaInline {    if (isGreenOrPurple(object))      return false;  // inherently acyclic or already purple, so do nothing    int oldValue, newValue;    boolean rtn;    do {      oldValue = VM_Magic.prepare(object, RC_HEADER_OFFSET);      newValue = oldValue | PURPLE_MASK | BUFFERED_MASK;      if ((oldValue & BUFFERED_MASK) == 0)	rtn = true; // need to add to buffer      else	rtn = false; // already buffered    } while (!VM_Magic.attempt(object, RC_HEADER_OFFSET, oldValue, newValue));    return rtn;  }