- public void dec(Object id) {
-
- if (PRINT) {
- if (get() < 5)
- new Exception("dec" + get() + " " + this).printStackTrace();
- }
-
- if (BOOKKEEPING) {
- Debugger debugger = debuggerMap.get(this);
- if (debugger != null)
- debugger.dec(id);
- // StackTraceElement[] tr = new Exception().getStackTrace();
- // if(tr.length == 3)
- // debugger.dec(new String[] { debug, tr[2].toString() });
- // else if(tr.length == 4)
- // debugger.dec(new String[] { debug, tr[2].toString(),
- // tr[3].toString() });
- // else
- // debugger.dec(new String[] { debug, tr[2].toString(),
- // tr[3].toString(), tr[4].toString() });
- }
-
- // System.err.println("barrier " + this);
- // StackTraceElement[] elems = new Exception().getStackTrace();
- // for(int i=0;i<3;i++) System.err.println(elems[i]);
- // new Exception().printStackTrace();
-
- int count = decrementAndGet();
- if (count < 1) {
- if (count == 0) {
- if (caller != null)
- caller.dec(this);
- if (RESTART_GUARD)
- restartMap.put(this, true);
- // sema.release();
- // if(DEBUGGER) {
- // debuggerMap.remove(this);
- // }
- // if(REVERSE_LOOKUP) {
- // reverseLookup.remove(this);
- // }
- }
- if (count < 0) {
- Logger.defaultLogError(
- "Database request processing error. The application code has performed illegal actions (probably called multiple times the execute or exception method of a single result request.",
- new Exception());
- // String message = ;
- // System.out.println(message);
- // if (DEBUGGER) {
- // JOptionPane.showMessageDialog(null, message);
- // System.out.println(debugger);
- // }
- // sema.release();
- System.exit(-1);
- }
- assert (count >= 0);
- }
+ public static String report(AsyncBarrierImpl barrier) {
+ CacheEntry<?> e = BarrierTracing.entryMap.get(barrier);
+ if(e != null) return e.toString();
+ else return "Barrier@" + System.identityHashCode(barrier);