@@ -48,8 +48,8 @@ public static void MemoryPoolSpan()
4848 Memory < int > memory = block . Memory ;
4949 Span < int > sp = memory . Span ;
5050 Assert . Equal ( memory . Length , sp . Length ) ;
51- Assert . True ( MemoryMarshal . TryGetMemoryManager < int , MemoryManager < int > > ( memory , out MemoryManager < int > manager ) ) ;
52- using ( MemoryHandle newMemoryHandle = manager . Pin ( ) )
51+ Assert . True ( MemoryMarshal . TryGetArray ( memory , out ArraySegment < int > arraySegment ) ) ;
52+ using ( MemoryHandle newMemoryHandle = memory . Pin ( ) )
5353 {
5454 unsafe
5555 {
@@ -60,6 +60,7 @@ public static void MemoryPoolSpan()
6060 }
6161 }
6262
63+
6364 [ Theory ]
6465 [ InlineData ( 0 ) ]
6566 [ InlineData ( 3 ) ]
@@ -72,8 +73,8 @@ public static void MemoryPoolPin(int elementIndex)
7273 Memory < int > memory = block . Memory ;
7374 Span < int > sp = memory . Span ;
7475 Assert . Equal ( memory . Length , sp . Length ) ;
75- Assert . True ( MemoryMarshal . TryGetMemoryManager < int , MemoryManager < int > > ( memory , out MemoryManager < int > manager ) ) ;
76- using ( MemoryHandle newMemoryHandle = manager . Pin ( elementIndex : elementIndex ) )
76+ Assert . True ( MemoryMarshal . TryGetArray ( memory , out ArraySegment < int > segment ) ) ;
77+ using ( MemoryHandle newMemoryHandle = memory . Slice ( elementIndex ) . Pin ( ) )
7778 {
7879 unsafe
7980 {
@@ -94,7 +95,7 @@ public static void MemoryPoolPinBadOffset(int elementIndex)
9495 Memory < int > memory = block . Memory ;
9596 Span < int > sp = memory . Span ;
9697 Assert . Equal ( memory . Length , sp . Length ) ;
97- Assert . Throws < ArgumentOutOfRangeException > ( ( ) => ( ( MemoryManager < int > ) block ) . Pin ( elementIndex : elementIndex ) ) ;
98+ Assert . Throws < ArgumentOutOfRangeException > ( ( ) => memory . Slice ( elementIndex ) . Pin ( ) ) ;
9899 }
99100
100101 [ Fact ]
@@ -107,8 +108,8 @@ public static void MemoryPoolPinOffsetAtEnd()
107108 Assert . Equal ( memory . Length , sp . Length ) ;
108109
109110 int elementIndex = memory . Length ;
110- Assert . True ( MemoryMarshal . TryGetMemoryManager < int , MemoryManager < int > > ( memory , out MemoryManager < int > manager ) ) ;
111- using ( MemoryHandle newMemoryHandle = manager . Pin ( elementIndex : elementIndex ) )
111+ Assert . True ( MemoryMarshal . TryGetArray ( memory , out ArraySegment < int > segment ) ) ;
112+ using ( MemoryHandle newMemoryHandle = memory . Slice ( elementIndex ) . Pin ( ) )
112113 {
113114 unsafe
114115 {
@@ -128,8 +129,8 @@ public static void MemoryPoolPinBadOffsetTooLarge()
128129 Assert . Equal ( memory . Length , sp . Length ) ;
129130
130131 int elementIndex = memory . Length + 1 ;
131- Assert . True ( MemoryMarshal . TryGetMemoryManager < int , MemoryManager < int > > ( memory , out MemoryManager < int > manager ) ) ;
132- Assert . Throws < ArgumentOutOfRangeException > ( ( ) => manager . Pin ( elementIndex : elementIndex ) ) ;
132+ Assert . True ( MemoryMarshal . TryGetArray ( memory , out ArraySegment < int > segment ) ) ;
133+ Assert . Throws < ArgumentOutOfRangeException > ( ( ) => memory . Slice ( elementIndex ) . Pin ( ) ) ;
133134 }
134135
135136 [ Fact ]
@@ -150,13 +151,13 @@ public static void EachRentalIsUniqueUntilDisposed()
150151 IMemoryOwner < int > newBlock = pool . Rent ( minBufferSize ) ;
151152 Memory < int > memory = newBlock . Memory ;
152153 Assert . True ( memory . Length >= minBufferSize ) ;
153- Assert . True ( MemoryMarshal . TryGetMemoryManager < int , MemoryManager < int > > ( newBlock . Memory , out MemoryManager < int > newManager ) ) ;
154+ Assert . True ( MemoryMarshal . TryGetArray ( newBlock . Memory , out ArraySegment < int > newArraySegment ) ) ;
154155 foreach ( IMemoryOwner < int > prior in priorBlocks )
155156 {
156- Assert . True ( MemoryMarshal . TryGetMemoryManager < int , MemoryManager < int > > ( prior . Memory , out MemoryManager < int > priorManager ) ) ;
157- using ( MemoryHandle priorMemoryHandle = priorManager . Pin ( ) )
157+ Assert . True ( MemoryMarshal . TryGetArray ( prior . Memory , out ArraySegment < int > priorArraySegment ) ) ;
158+ using ( MemoryHandle priorMemoryHandle = prior . Memory . Pin ( ) )
158159 {
159- using ( MemoryHandle newMemoryHandle = newManager . Pin ( ) )
160+ using ( MemoryHandle newMemoryHandle = newBlock . Memory . Pin ( ) )
160161 {
161162 unsafe
162163 {
@@ -170,8 +171,7 @@ public static void EachRentalIsUniqueUntilDisposed()
170171
171172 foreach ( IMemoryOwner < int > prior in priorBlocks )
172173 {
173- Assert . True ( MemoryMarshal . TryGetMemoryManager < int , MemoryManager < int > > ( prior . Memory , out MemoryManager < int > priorManager ) ) ;
174- priorManager . Unpin ( ) ;
174+ Assert . True ( MemoryMarshal . TryGetArray ( prior . Memory , out ArraySegment < int > priorArraySegment ) ) ;
175175 prior . Dispose ( ) ;
176176 }
177177 }
@@ -219,10 +219,10 @@ public static void MemoryPoolTryGetArray()
219219 Assert . Equal ( memory . Length , arraySegment . Count ) ;
220220 unsafe
221221 {
222- Assert . True ( MemoryMarshal . TryGetMemoryManager < int , MemoryManager < int > > ( memory , out MemoryManager < int > manager ) ) ;
223- void * pSpan = Unsafe . AsPointer ( ref MemoryMarshal . GetReference ( manager . GetSpan ( ) ) ) ;
222+ Assert . True ( MemoryMarshal . TryGetArray ( memory , out arraySegment ) ) ;
224223 fixed ( int * pArray = arraySegment . Array )
225224 {
225+ void * pSpan = Unsafe . AsPointer ( ref MemoryMarshal . GetReference ( memory . Span ) ) ;
226226 Assert . Equal ( ( IntPtr ) pSpan , ( IntPtr ) pArray ) ;
227227 }
228228 }
@@ -233,47 +233,16 @@ public static void MemoryPoolTryGetArray()
233233 public static void ExtraDisposesAreIgnored ( )
234234 {
235235 IMemoryOwner < int > block = MemoryPool < int > . Shared . Rent ( 42 ) ;
236- ( ( MemoryManager < int > ) block ) . Unpin ( ) ;
237- block . Dispose ( ) ;
238- block . Dispose ( ) ;
239- }
240-
241- [ Fact ]
242- public static void NoSpanAfterDispose ( )
243- {
244- IMemoryOwner < int > block = MemoryPool < int > . Shared . Rent ( 42 ) ;
245- ( ( MemoryManager < int > ) block ) . Unpin ( ) ;
246- block . Dispose ( ) ;
247- Assert . Throws < ObjectDisposedException > ( ( ) => ( ( MemoryManager < int > ) block ) . GetSpan ( ) . DontBox ( ) ) ;
248- }
249-
250- [ Fact ]
251- public static void NoPinAfterDispose ( )
252- {
253- IMemoryOwner < int > block = MemoryPool < int > . Shared . Rent ( 42 ) ;
254- ( ( MemoryManager < int > ) block ) . Unpin ( ) ;
255236 block . Dispose ( ) ;
256- Assert . Throws < ObjectDisposedException > ( ( ) => ( ( MemoryManager < int > ) block ) . Pin ( ) ) ;
257- }
258-
259- [ Fact ]
260- public static void NoUnpin_AfterDispose ( )
261- {
262- IMemoryOwner < int > block = MemoryPool < int > . Shared . Rent ( 42 ) ;
263- ( ( MemoryManager < int > ) block ) . Unpin ( ) ;
264237 block . Dispose ( ) ;
265- Assert . Throws < ObjectDisposedException > ( ( ) => ( ( MemoryManager < int > ) block ) . Unpin ( ) ) ;
266238 }
267239
268- [ Fact ]
269- public static void NoTryGetArrayAfterDispose ( )
270- {
271- IMemoryOwner < int > block = MemoryPool < int > . Shared . Rent ( 42 ) ;
272- Memory < int > memory = block . Memory ;
273- ( ( MemoryManager < int > ) block ) . Unpin ( ) ;
274- block . Dispose ( ) ;
275- Assert . Throws < ObjectDisposedException > ( ( ) => MemoryMarshal . TryGetArray ( memory , out ArraySegment < int > arraySegment ) ) ;
276- }
240+ [ Fact ]
241+ public static void NoMemoryAfterDispose ( )
242+ {
243+ IMemoryOwner < int > block = MemoryPool < int > . Shared . Rent ( 42 ) ;
244+ block . Dispose ( ) ;
245+ Assert . Throws < ObjectDisposedException > ( ( ) => block . Memory ) ;
246+ }
277247 }
278248}
279-
0 commit comments