Index: Mutex.java =================================================================== RCS file: /cvs/openide/src/org/openide/util/Mutex.java,v retrieving revision 1.60 diff -u -r1.60 Mutex.java --- Mutex.java 11 Feb 2004 15:31:14 -0000 1.60 +++ Mutex.java 7 Apr 2004 15:43:38 -0000 @@ -428,7 +428,6 @@ info.counts[requested]++; if ((requested == S) && (info.counts[requested] == 1)) { readersNo++; - info.stamp = readersNo; } } return true; @@ -458,7 +457,6 @@ registeredThreads.put(t, info = new ThreadInfo(t, requested)); if (requested == S) { readersNo++; - info.stamp = readersNo; } return true; } // else { @@ -478,7 +476,7 @@ } /** privilegedEnter serves for processing posted requests */ - private boolean reenter(Thread t, int mode, int stamp) { + private boolean reenter(Thread t, int mode) { // from leaveX -> grantedMode is NONE or S if (mode == S) { @@ -506,7 +504,6 @@ registeredThreads.put(t, info); // prevent from grantedMode == NONE (another thread - leaveS) readersNo += 2; - info.stamp = stamp; // prevent from new readers grantedMode = CHAIN; return true; @@ -535,7 +532,7 @@ // since there can be another one // in the queue with higher priority grantedMode = CHAIN; - cell = chain(mode, t, Integer.MAX_VALUE - info.stamp); + cell = chain(mode, t, Integer.MAX_VALUE); if (readersNo == 0) { // seems I may enter // no one has higher prio? @@ -590,7 +587,7 @@ if (postedMode != NONE) { int runsize = info.getRunnableCount(postedMode); if (runsize != 0) { - needLock = reenter(t, postedMode, info.stamp); // grab lock + needLock = reenter(t, postedMode); // grab lock } } } // sync @@ -769,6 +766,8 @@ final int size = waiters.size(); if (size == 0) { waiters.add(qc); + } else if (qc.getPriority() == Integer.MAX_VALUE) { + waiters.add(0, qc); } else { QueueCell cursor; int i = 0; @@ -1056,10 +1055,6 @@ * deadlock avoidance technique */ List[] queues; - /** time stamp of the thread - * set only for S mode - */ - int stamp; /** value of counts[S] when the mode was upgraded * rsnapshot works as follows: