if (VM.VerifyAssertions) VM.assert(addrInHeap(tref));
if (VM.VerifyAssertions) VM._assert(addrInHeap(tref));
  boolean mark (VM_Address ref) throws VM_PragmaUninterruptible {    VM_Address tref = VM_ObjectModel.getPointerInMemoryRegion(ref);    if (VM.VerifyAssertions) VM.assert(addrInHeap(tref));    int ij;    int page_num = (tref.diff(start)) >>> 12;    boolean result = (largeSpaceMark[page_num] != 0);    if (result) return false;	// fast, no synch case        spaceLock.lock();		// get sysLock for large objects    result = (largeSpaceMark[page_num] != 0);    if (result) {	// need to recheck      spaceLock.release();      return false;	    }    int temp = largeSpaceAlloc[page_num];    if (temp == 1)       largeSpaceMark[page_num] = 1;    else {      // mark entries for both ends of the range of allocated pages      if (temp > 0) {	ij = page_num + temp -1;	largeSpaceMark[ij] = (short)-temp;      }      else {	ij = page_num + temp + 1;	largeSpaceMark[ij] = (short)-temp;      }      largeSpaceMark[page_num] = (short)temp;    }    spaceLock.unlock();	// INCLUDES sync()    return true;  }