public static ThreadLocalLockEntry GetOrCreateCurrent(long lockID)
{
Debug.Assert(lockID != 0);
ThreadLocalLockEntry headEntry = t_lockEntryHead;
if (headEntry != null)
{
if (headEntry._lockID == lockID)
{
VerifyNoNonemptyEntryInListAfter(lockID, headEntry);
return headEntry;
}
if (headEntry.IsFree)
{
VerifyNoNonemptyEntryInListAfter(lockID, headEntry);
headEntry._lockID = lockID;
return headEntry;
}
}
return GetOrCreateCurrentSlow(lockID, headEntry);
}