l.ownerId      = old & TL_THREAD_ID_MASK;
l.ownerId      = old.and(TL_THREAD_ID_MASK).toInt();
  private static VM_Lock inflate (Object o, int lockOffset) {    int old;    int changed;    VM_Lock l = VM_Lock.allocate();    if (VM.VerifyAssertions) VM._assert(l != null); // inflate called by wait (or notify) which shouldn't be called during GC    int locked = TL_FAT_LOCK_MASK | (l.index << TL_LOCK_ID_SHIFT);    l.mutex.lock();    do {      old = VM_Magic.prepareInt(o, lockOffset);      // check to see if another thread has already created a fat lock      if ((old & TL_FAT_LOCK_MASK) != 0) { // already a fat lock in place        int index = (old & TL_LOCK_ID_MASK) >>> TL_LOCK_ID_SHIFT;        VM_Lock.free(l);        l.mutex.unlock();        l = VM_Scheduler.locks[index];        return l;      }      changed = locked | (old & TL_UNLOCK_MASK);      if (VM_Magic.attemptInt(o, lockOffset, old, changed)) {        l.lockedObject = o;        l.ownerId      = old & TL_THREAD_ID_MASK;        if (l.ownerId != 0)           l.recursionCount = ((old & TL_LOCK_COUNT_MASK) >> TL_LOCK_COUNT_SHIFT) +1;        l.mutex.unlock();        return l;      // VM_Lock in place      }      // contention detected, try again    } while (true);  }