// Token: 0x06003DD5 RID: 15829 RVA: 0x000E5934 File Offset: 0x000E3B34 private void SetValueSlow(T value, ThreadLocal <T> .LinkedSlotVolatile[] slotArray) { int num = ~this.m_idComplement; if (num < 0) { throw new ObjectDisposedException(Environment.GetResourceString("ThreadLocal_Disposed")); } if (slotArray == null) { slotArray = new ThreadLocal <T> .LinkedSlotVolatile[ThreadLocal <T> .GetNewTableSize(num + 1)]; ThreadLocal <T> .ts_finalizationHelper = new ThreadLocal <T> .FinalizationHelper(slotArray, this.m_trackAllValues); ThreadLocal <T> .ts_slotArray = slotArray; } if (num >= slotArray.Length) { this.GrowTable(ref slotArray, num + 1); ThreadLocal <T> .ts_finalizationHelper.SlotArray = slotArray; ThreadLocal <T> .ts_slotArray = slotArray; } if (slotArray[num].Value == null) { this.CreateLinkedSlot(slotArray, num, value); return; } ThreadLocal <T> .LinkedSlot value2 = slotArray[num].Value; if (!this.m_initialized) { throw new ObjectDisposedException(Environment.GetResourceString("ThreadLocal_Disposed")); } value2.Value = value; }
// Token: 0x06003DDD RID: 15837 RVA: 0x000E5C04 File Offset: 0x000E3E04 private void GrowTable(ref ThreadLocal <T> .LinkedSlotVolatile[] table, int minLength) { int newTableSize = ThreadLocal <T> .GetNewTableSize(minLength); ThreadLocal <T> .LinkedSlotVolatile[] array = new ThreadLocal <T> .LinkedSlotVolatile[newTableSize]; ThreadLocal <T> .IdManager obj = ThreadLocal <T> .s_idManager; lock (obj) { for (int i = 0; i < table.Length; i++) { ThreadLocal <T> .LinkedSlot value = table[i].Value; if (value != null && value.SlotArray != null) { value.SlotArray = array; array[i] = table[i]; } } } table = array; }
private void SetValueSlow(T value, ThreadLocal <T> .LinkedSlotVolatile[] slotArray) { int id = ~this.m_idComplement; if (id < 0) { throw new ObjectDisposedException(Environment.GetResourceString("ThreadLocal_Disposed")); } if (slotArray == null) { slotArray = new ThreadLocal <T> .LinkedSlotVolatile[ThreadLocal <T> .GetNewTableSize(id + 1)]; ThreadLocal <T> .ts_finalizationHelper = new ThreadLocal <T> .FinalizationHelper(slotArray, this.m_trackAllValues); ThreadLocal <T> .ts_slotArray = slotArray; } if (id >= slotArray.Length) { this.GrowTable(ref slotArray, id + 1); ThreadLocal <T> .ts_finalizationHelper.SlotArray = slotArray; ThreadLocal <T> .ts_slotArray = slotArray; } if (slotArray[id].Value == null) { this.CreateLinkedSlot(slotArray, id, value); } else { ThreadLocal <T> .LinkedSlot linkedSlot = slotArray[id].Value; if (!this.m_initialized) { throw new ObjectDisposedException(Environment.GetResourceString("ThreadLocal_Disposed")); } T obj = value; linkedSlot.Value = obj; } }
private void GrowTable(ref ThreadLocal <T> .LinkedSlotVolatile[] table, int minLength) { ThreadLocal <T> .LinkedSlotVolatile[] linkedSlotVolatileArray = new ThreadLocal <T> .LinkedSlotVolatile[ThreadLocal <T> .GetNewTableSize(minLength)]; lock (ThreadLocal <T> .s_idManager) { for (int local_3 = 0; local_3 < table.Length; ++local_3) { ThreadLocal <T> .LinkedSlot local_4 = table[local_3].Value; if (local_4 != null && local_4.SlotArray != null) { local_4.SlotArray = linkedSlotVolatileArray; linkedSlotVolatileArray[local_3] = table[local_3]; } } } table = linkedSlotVolatileArray; }