pagesMarked += (-temp);
  VM_Address traceObject (VM_Address ref) {    VM_Address tref = VM_ObjectModel.getPointerInMemoryRegion(ref);    // if (VM.VerifyAssertions) VM._assert(addrInHeap(tref));    int ij;    int page_num = tref.diff(start).toInt() >>> 12;    boolean result = (mark[page_num] != 0);    if (result) return ref;	// fast, no synch case        LOSlock();		// get sysLock for large objects    result = (mark[page_num] != 0);    if (result) {	// need to recheck      LOSunlock();      return ref;    }    int temp = allocated[page_num];    if (temp == 1)       mark[page_num] = 1;    else {      // mark entries for both ends of the range of allocated pages      if (temp > 0) {	ij = page_num + temp -1;	mark[ij] = (short)-temp;	pagesMarked += temp;      }      else {	ij = page_num + temp + 1;	mark[ij] = (short)-temp;	pagesMarked += (-temp);      }      mark[page_num] = (short)temp;    }    VM_Interface.getPlan().enqueue(ref);    LOSunlock();    return ref;  }