public virtual void lockRead() { Thread thread = Thread.currentThread(); int index = this.getIndex(thread); ReaderWriterLock.ReaderWriterNode readerWriterNode; if (index == -1) { readerWriterNode = new ReaderWriterLock.ReaderWriterNode(thread, 0, (ReaderWriterLock.\u0031) null); this.waiters.add((object) readerWriterNode); } else readerWriterNode = (ReaderWriterLock.ReaderWriterNode) this.waiters.get(index); while (this.getIndex(thread) > this.firstWriter()) { Exception exception1; try { Object.instancehelper_wait((object) this); continue; } catch (Exception ex) { int num = 0; M0 m0 = ByteCodeHelper.MapException<Exception>(ex, (ByteCodeHelper.MapFlags) num); if (m0 == null) throw; else exception1 = (Exception) m0; } Exception exception2 = exception1; System.get_err().println("ReaderWriterLock.lockRead(): exception."); System.get_err().print(Throwable.instancehelper_getMessage((Exception) exception2)); } ++readerWriterNode.nAcquires; }
public virtual void lockWrite() { Thread thread = Thread.currentThread(); int index = this.getIndex(thread); ReaderWriterLock.ReaderWriterNode readerWriterNode; if (index == -1) { readerWriterNode = new ReaderWriterLock.ReaderWriterNode(thread, 1, (ReaderWriterLock.\u0031) null); this.waiters.add((object) readerWriterNode); } else { readerWriterNode = (ReaderWriterLock.ReaderWriterNode) this.waiters.get(index); if (readerWriterNode.state == 0) { string str = "Upgrade lock"; Throwable.__\u003CsuppressFillInStackTrace\u003E(); throw new IllegalArgumentException(str); } else readerWriterNode.state = 1; } while (this.getIndex(thread) != 0) { Exception exception1; try { Object.instancehelper_wait((object) this); continue; } catch (Exception ex) { int num = 0; M0 m0 = ByteCodeHelper.MapException<Exception>(ex, (ByteCodeHelper.MapFlags) num); if (m0 == null) throw; else exception1 = (Exception) m0; } Exception exception2 = exception1; System.get_err().println("ReaderWriterLock.lockWrite(): exception."); System.get_err().print(Throwable.instancehelper_getMessage((Exception) exception2)); } ++readerWriterNode.nAcquires; }