}
  public void acquire() {    int ticket = VM_Synchronization.fetchAndAdd(this, dispenserFieldOffset, 1);    int retryCountdown = TIMEOUT_CHECK_FREQ;    long localStart = 0; // Avoid getting time unnecessarily    long lastSlowReport = 0;    while (ticket != serving) {      if (localStart == 0) lastSlowReport = localStart = VM_Time.cycles();      if (--retryCountdown == 0) {	retryCountdown = TIMEOUT_CHECK_FREQ;	long now = VM_Time.cycles();	long lastReportDuration = now - lastSlowReport;	long waitTime = now - localStart;	if (lastReportDuration > SLOW_THRESHOLD) {	    lastSlowReport = now;	    VM.sysWrite("GC Warning: possible slow or deadlock - failed to acquire lock ",id);	    VM.sysWrite(" (",name);	    VM.sysWriteln(")  after ",VM_Time.cyclesToMillis(waitTime)," ms");	    VM_Thread t = thread;	    if (t == null) 		VM.sysWriteln("GC Warning: Locking thread unknown");	    else {		VM.sysWrite("GC Warning:  Locking thread: "); t.dump(1); 		VM.sysWriteln(" at position ",where);	    }	}	if (waitTime > TIME_OUT) {	    VM.sysWrite("GC Warning: Locked out thread: "); 	    VM_Thread.getCurrentThread().dump(1); 	    VM_Scheduler.dumpStack();	    VM_Interface.sysFail("Deadlock or someone holding on to lock for too long");	}      }    }    if (REPORT_SLOW)       setLocker(VM_Time.cycles(), VM_Thread.getCurrentThread(), -1);    if (verbose > 1) {      VM.sysWrite("Thread ");      thread.dump();      VM.sysWrite(" acquired lock ",id);      VM.sysWriteln(" ",name);    }    VM_Magic.isync();  }