buckets[h] = b;
if (VM.VerifyAssertions) VM.assert(!VM_Collector.NEEDS_WRITE_BARRIER); VM_Magic.setObjectAtOffset(buckets, h<<2, b);
  private VM_Lock findOrInsert (Object o, boolean insert) {    int h = VM_ObjectModel.getObjectHashCode(o) % SIZE;    if (h < 0) h = -h;    myLock.lock();    for (VM_LockBucket b = buckets[h]; b != null; b = b.next) {      if (b.object == o) {        if (DEBUG) { VM.sysWrite(VM_Magic.objectAsAddress(o));  VM.sysWrite(": Found nursery lock\n"); }	myLock.unlock();        return b.lock;      }    }    if (insert) {      if (DEBUG) { VM.sysWrite(VM_Magic.objectAsAddress(o));  VM.sysWrite(": Created nursery lock\n"); }      VM_LockBucket b = allocate();      b.next = buckets[h];      b.lock = VM_Lock.allocate();      b.object = o;      b.lock.lockedObject = o;      buckets[h] = b;      myLock.unlock();      return b.lock;    } else {      myLock.unlock();      return null;    }  }