2 instantiations of CachingContext
System.Text.Json (2)
System\Text\Json\Serialization\JsonSerializerOptions.Caching.cs (2)
444
return new
CachingContext
(options, hashCode);
454
var ctx = new
CachingContext
(options, hashCode);
16 references to CachingContext
System.Text.Json (16)
System\Text\Json\Serialization\JsonSerializerOptions.Caching.cs (16)
23
internal
CachingContext
CacheContext
30
CachingContext
GetOrCreate()
32
CachingContext
ctx = TrackedCachingContexts.GetOrCreate(this);
38
private
CachingContext
? _cachingContext;
289
private static CacheEntry CreateCacheEntry(Type type,
CachingContext
context)
421
/// this approach uses a fixed-size array of weak references of <see cref="
CachingContext
"/> that can be looked up lock-free.
427
private static readonly WeakReference<
CachingContext
>?[] s_trackedContexts = new WeakReference<
CachingContext
>[MaxTrackedContexts];
430
public static
CachingContext
GetOrCreate(JsonSerializerOptions options)
437
if (TryGetContext(options, hashCode, out int firstUnpopulatedIndex, out
CachingContext
? result))
454
var
ctx = new CachingContext(options, hashCode);
459
ref WeakReference<
CachingContext
>? weakRef = ref s_trackedContexts[firstUnpopulatedIndex];
480
[NotNullWhen(true)] out
CachingContext
? result)
482
WeakReference<
CachingContext
>?[] trackedContexts = s_trackedContexts;
487
WeakReference<
CachingContext
>? weakRef = trackedContexts[i];
489
if (weakRef is null || !weakRef.TryGetTarget(out
CachingContext
? ctx))