2 instantiations of CachingContext
System.Text.Json (2)
System\Text\Json\Serialization\JsonSerializerOptions.Caching.cs (2)
413
return new
CachingContext
(options, hashCode);
423
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;
258
private static CacheEntry CreateCacheEntry(Type type,
CachingContext
context)
390
/// this approach uses a fixed-size array of weak references of <see cref="
CachingContext
"/> that can be looked up lock-free.
396
private static readonly WeakReference<
CachingContext
>?[] s_trackedContexts = new WeakReference<
CachingContext
>[MaxTrackedContexts];
399
public static
CachingContext
GetOrCreate(JsonSerializerOptions options)
406
if (TryGetContext(options, hashCode, out int firstUnpopulatedIndex, out
CachingContext
? result))
423
var
ctx = new CachingContext(options, hashCode);
428
ref WeakReference<
CachingContext
>? weakRef = ref s_trackedContexts[firstUnpopulatedIndex];
449
[NotNullWhen(true)] out
CachingContext
? result)
451
WeakReference<
CachingContext
>?[] trackedContexts = s_trackedContexts;
456
WeakReference<
CachingContext
>? weakRef = trackedContexts[i];
458
if (weakRef is null || !weakRef.TryGetTarget(out
CachingContext
? ctx))