if (VM.VerifyAssertions) VM._assert(!SimpleRCHeader.isGreen(obj)); if (SimpleRCHeader.isPurple(obj) && SimpleRCHeader.isLiveRC(obj)) { if (VM.VerifyAssertions) VM._assert(!SimpleRCHeader.isGrey(obj));
if (VM.VerifyAssertions) VM._assert(!SimpleRCBaseHeader.isGreen(obj)); if (SimpleRCBaseHeader.isPurple(obj)) { if (VM.VerifyAssertions) VM._assert(SimpleRCBaseHeader.isLiveRC(obj));
  private final void doMarkGreyPhase() {    VM_Address obj;    AddressQueue src = (cycleBufferAisOpen) ? cycleBufferA : cycleBufferB;    AddressQueue tgt = (cycleBufferAisOpen) ? cycleBufferB : cycleBufferA;    rcCollector.markGreyPhase();    while (!(obj = src.pop()).isZero()) {      if (VM.VerifyAssertions) VM._assert(!SimpleRCHeader.isGreen(obj));      if (SimpleRCHeader.isPurple(obj) && SimpleRCHeader.isLiveRC(obj)) {	if (VM.VerifyAssertions) VM._assert(!SimpleRCHeader.isGrey(obj));	rcCollector.markGrey(obj);	tgt.push(obj);      } else  	SimpleRCHeader.clearBufferedBit(obj);    }     cycleBufferAisOpen = !cycleBufferAisOpen;  }