Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Return()

void System.Buffers.ConfigurableArrayPool< T >.Bucket.Return ( T[] array)
inlinepackage

Definition at line 65 of file ConfigurableArrayPool.cs.

66 {
67 if (array.Length != _bufferLength)
68 {
69 throw new ArgumentException(SR.ArgumentException_BufferNotFromPool, "array");
70 }
71 bool lockTaken = false;
72 bool flag;
73 try
74 {
75 _lock.Enter(ref lockTaken);
76 flag = _index != 0;
77 if (flag)
78 {
80 }
81 }
82 finally
83 {
84 if (lockTaken)
85 {
86 _lock.Exit(useMemoryBarrier: false);
87 }
88 }
89 if (!flag)
90 {
91 ArrayPoolEventSource log = ArrayPoolEventSource.Log;
92 if (log.IsEnabled())
93 {
94 log.BufferDropped(array.GetHashCode(), _bufferLength, _poolId, Id, ArrayPoolEventSource.BufferDroppedReason.Full);
95 }
96 }
97 }
void Enter(ref bool lockTaken)
Definition SpinLock.cs:94

References System.Buffers.ConfigurableArrayPool< T >.Bucket._bufferLength, System.Buffers.ConfigurableArrayPool< T >.Bucket._buffers, System.Buffers.ConfigurableArrayPool< T >.Bucket._index, System.Buffers.ConfigurableArrayPool< T >.Bucket._lock, System.Buffers.ConfigurableArrayPool< T >.Bucket._poolId, System.SR.ArgumentException_BufferNotFromPool, System.array, System.Buffers.ArrayPoolEventSource.BufferDropped(), System.Threading.SpinLock.Enter(), System.Threading.SpinLock.Exit(), System.Buffers.ConfigurableArrayPool< T >.Bucket.Id, System.Diagnostics.Tracing.EventSource.IsEnabled(), and System.Buffers.ArrayPoolEventSource.Log.

Referenced by System.Buffers.ConfigurableArrayPool< T >.Return().