byte tbyte = (byte)1; int  temp, temp1; do  {  temp1 = VM_Magic.prepare(this_block.mark, ((slotndx>>2)<<2)); if (this_block.mark[slotndx] != 0) return true;  int index = slotndx%4;  int index = 3 - (slotndx%4);  int mask = tbyte << (index * 8); temp  = temp1 | mask; }  while (!VM_Magic.attempt(this_block.mark, ((slotndx>>2)<<2), temp1, temp));
if (false) {  this_block.mark[slotndx] = 1; } else { byte tbyte = (byte)1; int  temp, temp1; do  {  temp1 = VM_Magic.prepare(this_block.mark, ((slotndx>>2)<<2)); if (this_block.mark[slotndx] != 0) return true;  int index = slotndx%4;  int index = 3 - (slotndx%4);  int mask = tbyte << (index * 8); temp  = temp1 | mask; }  while (!VM_Magic.attempt(this_block.mark, ((slotndx>>2)<<2), temp1, temp)); }
  public boolean  mark(VM_Address ref) {    VM_Address tref = VM_ObjectModel.getPointerInMemoryRegion(ref);    int blkndx  = (tref.diff(start)) >> LOG_GC_BLOCKSIZE ;    VM_BlockControl  this_block = blocks[blkndx];    int  offset   = tref.diff(this_block.baseAddr);     int  slotndx  = offset/this_block.slotsize;        if (this_block.mark[slotndx] != 0) return true;        byte tbyte = (byte)1;    int  temp, temp1;    do  {      // get word with proper byte from map      temp1 = VM_Magic.prepare(this_block.mark, ((slotndx>>2)<<2));      if (this_block.mark[slotndx] != 0) return true;      //-#if RVM_FOR_IA32          int index = slotndx%4; // get byte in word - little Endian      //-#else       int index = 3 - (slotndx%4); // get byte in word - big Endian      //-#endif      int mask = tbyte << (index * 8); // convert to bit in word      temp  = temp1 | mask;        // merge into existing word    }  while (!VM_Magic.attempt(this_block.mark, ((slotndx>>2)<<2), temp1, temp));    // TODO: move this code to generic GC code!    // if (VM_Allocator.GC_COUNT_LIVE_OBJECTS) VM_Processor.getCurrentProcessor().small_live++;    this_block.live  = true;    return  false;  }