2 writes to m_last
mscorlib (2)
system\threading\Tasks\ProducerConsumerQueues.cs (2)
169
segment.m_state.
m_last
= tail2;
195
newSegment.m_state.
m_last
= 1;
18 references to m_last
mscorlib (18)
system\threading\Tasks\ProducerConsumerQueues.cs (18)
162
int last = segment.m_state.
m_last
; // local copy to avoid multiple volatile reads
238
if (segment.m_state.
m_last
!= segment.m_state.m_lastCopy)
240
segment.m_state.m_lastCopy = segment.m_state.
m_last
;
244
if (segment.m_next != null && segment.m_state.m_first == segment.m_state.
m_last
)
253
if (first == segment.m_state.
m_last
)
262
segment.m_state.m_lastCopy = segment.m_state.
m_last
; // Refresh m_lastCopy to ensure that m_first has not passed m_lastCopy
296
if (segment.m_state.
m_last
!= segment.m_state.m_lastCopy)
298
segment.m_state.m_lastCopy = segment.m_state.
m_last
;
302
if (segment.m_next != null && segment.m_state.m_first == segment.m_state.
m_last
)
311
if (first == segment.m_state.
m_last
)
362
if (segment.m_state.
m_last
!= segment.m_state.m_lastCopy)
364
segment.m_state.m_lastCopy = segment.m_state.
m_last
;
368
if (segment.m_next != null && segment.m_state.m_first == segment.m_state.
m_last
)
377
if (first == segment.m_state.
m_last
)
388
segment.m_state.m_lastCopy = segment.m_state.
m_last
; // Refresh m_lastCopy to ensure that m_first has not passed m_lastCopy
413
if (head.m_state.m_first != head.m_state.
m_last
) return false;
425
pt != segment.m_state.
m_last
;
450
last = segment.m_state.
m_last
;