terraria-cpp2il-methodrecon v1.4.4.9
Terraria mobile dump, with reconstructed method body. Dump with CallAnalysis: https://infinitynichto.github.io/terraria-cpp2il
Loading...
Searching...
No Matches
ThreadLocal.cs
Go to the documentation of this file.
1using System;
5
6namespace System.Threading
7{
8 // Token: 0x020001E3 RID: 483
9 [DebuggerDisplay("IsValueCreated={IsValueCreated}, Value={ValueForDebugDisplay}, Count={ValuesCountForDebugDisplay}")]
11 public class ThreadLocal<T> : IDisposable
12 {
13 // Token: 0x06001165 RID: 4453 RVA: 0x00024ECC File Offset: 0x000230CC
15 {
16 do
17 {
18 base..ctor();
19 }
20 while (valueFactory == null);
22 }
23
24 // Token: 0x06001166 RID: 4454 RVA: 0x00024EEC File Offset: 0x000230EC
30
31 // Token: 0x06001167 RID: 4455 RVA: 0x00024F08 File Offset: 0x00023108
32 protected override void Finalize()
33 {
34 base.Finalize();
35 }
36
37 // Token: 0x06001168 RID: 4456 RVA: 0x00024F3C File Offset: 0x0002313C
38 public void Dispose()
39 {
40 GC.SuppressFinalize(this);
41 }
42
43 // Token: 0x06001169 RID: 4457 RVA: 0x00024F50 File Offset: 0x00023150
44 protected virtual void Dispose(bool disposing)
45 {
48 }
49
50 // Token: 0x0600116A RID: 4458 RVA: 0x0000207A File Offset: 0x0000027A
51 public override string ToString()
52 {
53 throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
54 }
55
56 // Token: 0x170001A0 RID: 416
57 // (get) Token: 0x0600116B RID: 4459 RVA: 0x00024FA8 File Offset: 0x000231A8
58 // (set) Token: 0x0600116C RID: 4460 RVA: 0x00024FCC File Offset: 0x000231CC
60 public T Value
61 {
62 get
63 {
64 /*
65An exception occurred when decompiling this method (0600116B)
66
67ICSharpCode.Decompiler.DecompilerException: Error decompiling T System.Threading.ThreadLocal`1::get_Value()
68
69 ---> System.Exception: Basic block has to end with unconditional control flow.
70{
71 IL_0000:
72 stloc:int32(var_0_06, ldfld:int32(ThreadLocal`1::m_idComplement, ldloc:ThreadLocal`1(this)))
73 stloc:int32(var_1_0D, ldfld:int32(ThreadLocal`1::m_idComplement, ldloc:ThreadLocal`1(this)))
74 brtrue(IL_0000, logicnot:bool(ldfld:bool(ThreadLocal`1::m_initialized, ldloc:ThreadLocal`1(this))))
75}
76
77 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
78 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
79 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
80 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
81 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
82 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
83 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
84 --- End of inner exception stack trace ---
85 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
86 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
87*/;
88 }
89 set
90 {
93 if (this.m_initialized)
94 {
95 return;
96 }
97 }
98 }
99
100 // Token: 0x0600116D RID: 4461 RVA: 0x00024FF0 File Offset: 0x000231F0
101 private T GetValueSlow()
102 {
103 /*
104An exception occurred when decompiling this method (0600116D)
105
106ICSharpCode.Decompiler.DecompilerException: Error decompiling T System.Threading.ThreadLocal`1::GetValueSlow()
107
108 ---> System.Exception: Basic block has to end with unconditional control flow.
109{
110 IL_0021:
111 stloc:string(var_4_2D, call:string(Environment::GetResourceString, ldstr:string("The ThreadLocal object has been disposed.")))
112}
113
114 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
115 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
116 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
117 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
118 --- End of inner exception stack trace ---
119 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
120 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
121*/;
122 }
123
124 // Token: 0x0600116E RID: 4462 RVA: 0x0002502C File Offset: 0x0002322C
126 {
127 /*
128An exception occurred when decompiling this method (0600116E)
129
130ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void System.Threading.ThreadLocal`1::SetValueSlow(T,System.Threading.ThreadLocal`1/LinkedSlotVolatile<T>[])
131
132 ---> System.Exception: Basic block has to end with unconditional control flow.
133{
134 IL_0066:
135 stloc:string(var_7_70, call:string(Environment::GetResourceString, ldstr:string("The ThreadLocal object has been disposed.")))
136}
137
138 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
139 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
140 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
141 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
142 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
143 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
144 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
145 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
146 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
147 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
148 --- End of inner exception stack trace ---
149 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
150 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
151*/;
152 }
153
154 // Token: 0x0600116F RID: 4463 RVA: 0x000250AC File Offset: 0x000232AC
156 {
157 int idComplement = this.m_idComplement;
158 if (this == null)
159 {
160 }
161 int idComplement2 = this.m_idComplement;
162 if (!this.m_initialized)
163 {
164 string resourceString = Environment.GetResourceString("The ThreadLocal object has been disposed.");
165 return;
166 }
169 if (valueFactory != null)
170 {
171 }
172 this.m_valueFactory = this;
173 long num = 0L;
174 if (this != null)
175 {
176 }
177 if (num == 0L)
178 {
179 return;
180 }
181 throw new OutOfMemoryException();
182 }
183
184 // Token: 0x170001A1 RID: 417
185 // (get) Token: 0x06001170 RID: 4464 RVA: 0x00025124 File Offset: 0x00023324
186 public bool IsValueCreated
187 {
188 get
189 {
190 /*
191An exception occurred when decompiling this method (06001170)
192
193ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean System.Threading.ThreadLocal`1::get_IsValueCreated()
194
195 ---> System.Exception: Basic block has to end with unconditional control flow.
196{
197 Block_0:
198 stloc:int32(var_0_06, ldfld:int32(ThreadLocal`1::m_idComplement, ldloc:ThreadLocal`1(this)))
199 stloc:string(var_2_13, call:string(Environment::GetResourceString, ldstr:string("The ThreadLocal object has been disposed.")))
200}
201
202 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
203 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
204 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
205 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
206 --- End of inner exception stack trace ---
207 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
208 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
209*/;
210 }
211 }
212
213 // Token: 0x06001171 RID: 4465 RVA: 0x00025144 File Offset: 0x00023344
214 private void GrowTable(ThreadLocal<T>.LinkedSlotVolatile[] table, int minLength)
215 {
216 long num = 0L;
217 int num2 = 5;
218 if (num == 0L)
219 {
220 if (num2 == 0)
221 {
222 table.Value = minLength;
223 }
224 return;
225 }
226 throw new OutOfMemoryException();
227 }
228
229 // Token: 0x06001172 RID: 4466 RVA: 0x0000207A File Offset: 0x0000027A
230 private static int GetNewTableSize(int minSize)
231 {
232 throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
233 }
234
235 // Token: 0x06001173 RID: 4467 RVA: 0x0002517C File Offset: 0x0002337C
236 // Note: this type is marked as 'beforefieldinit'.
237 static ThreadLocal()
238 {
239 }
240
241 // Token: 0x04000965 RID: 2405
243
244 // Token: 0x04000966 RID: 2406
247
248 // Token: 0x04000967 RID: 2407
251
252 // Token: 0x04000968 RID: 2408
253 private int m_idComplement;
254
255 // Token: 0x04000969 RID: 2409
256 private bool m_initialized;
257
258 // Token: 0x0400096A RID: 2410
260
261 // Token: 0x0400096B RID: 2411
263
264 // Token: 0x0400096C RID: 2412
265 private bool m_trackAllValues;
266
267 // Token: 0x020001E4 RID: 484
268 private struct LinkedSlotVolatile
269 {
270 // Token: 0x0400096D RID: 2413
272 }
273
274 // Token: 0x020001E5 RID: 485
275 private sealed class LinkedSlot
276 {
277 // Token: 0x06001174 RID: 4468 RVA: 0x0002518C File Offset: 0x0002338C
282
283 // Token: 0x0400096E RID: 2414
285
286 // Token: 0x0400096F RID: 2415
288
289 // Token: 0x04000970 RID: 2416
291
292 // Token: 0x04000971 RID: 2417
293 internal T Value;
294 }
295
296 // Token: 0x020001E6 RID: 486
297 private class IdManager
298 {
299 // Token: 0x06001175 RID: 4469 RVA: 0x000251A8 File Offset: 0x000233A8
300 internal int GetId()
301 {
302 int nextIdToTry = this.m_nextIdToTry;
303 return 43147264;
304 }
305
306 // Token: 0x06001176 RID: 4470 RVA: 0x000251EC File Offset: 0x000233EC
307 internal void ReturnId(int id)
308 {
309 int nextIdToTry = this.m_nextIdToTry;
311 }
312
313 // Token: 0x06001177 RID: 4471 RVA: 0x00025230 File Offset: 0x00023430
314 public IdManager()
315 {
316 }
317
318 // Token: 0x04000972 RID: 2418
319 private int m_nextIdToTry;
320
321 // Token: 0x04000973 RID: 2419
323 }
324
325 // Token: 0x020001E7 RID: 487
326 private class FinalizationHelper
327 {
328 // Token: 0x06001178 RID: 4472 RVA: 0x00025244 File Offset: 0x00023444
333
334 // Token: 0x06001179 RID: 4473 RVA: 0x00025260 File Offset: 0x00023460
335 protected override void Finalize()
336 {
339 if (trackAllValues)
340 {
341 return;
342 }
343 if (!trackAllValues)
344 {
345 }
346 long num = 0L;
347 if (trackAllValues)
348 {
349 }
350 if (num == 0L)
351 {
352 return;
353 }
354 throw new OutOfMemoryException();
355 }
356
357 // Token: 0x04000974 RID: 2420
359
360 // Token: 0x04000975 RID: 2421
361 private bool m_trackAllValues;
362 }
363 }
364}
class f__AnonymousType0<< Count > j__TPar
static string GetResourceString(string key)
static void SuppressFinalize(object obj)
Definition GC.cs:116
ThreadLocal< T >.LinkedSlotVolatile[] SlotArray
FinalizationHelper(ThreadLocal< T >.LinkedSlotVolatile[] slotArray, bool trackAllValues)
ThreadLocal< T >.LinkedSlot Previous
LinkedSlot(ThreadLocal< T >.LinkedSlotVolatile[] slotArray)
ThreadLocal< T >.LinkedSlotVolatile[] SlotArray
ThreadLocal< T >.LinkedSlot Next
static ThreadLocal< T >.FinalizationHelper ts_finalizationHelper
void CreateLinkedSlot(ThreadLocal< T >.LinkedSlotVolatile[] slotArray, int id, T value)
ThreadLocal< T >.LinkedSlot m_linkedSlot
static int GetNewTableSize(int minSize)
override string ToString()
static ThreadLocal< T >.LinkedSlotVolatile[] ts_slotArray
void SetValueSlow(T value, ThreadLocal< T >.LinkedSlotVolatile[] slotArray)
ThreadLocal(Func< T > valueFactory)
virtual void Dispose(bool disposing)
void Initialize(Func< T > valueFactory, bool trackAllValues)
void GrowTable(ThreadLocal< T >.LinkedSlotVolatile[] table, int minLength)
static ThreadLocal< T >.IdManager s_idManager