func freeSomeWbufs(preemptible bool) bool {
	const batchSize = 64 // ~1–2 µs per span.
	lock(&work.wbufSpans.lock)
	if gcphase != _GCoff || work.wbufSpans.free.isEmpty() {
		unlock(&work.wbufSpans.lock)
		return false
	}
	systemstack(func() {
		gp := getg().m.curg
		for i := 0; i < batchSize && !(preemptible && gp.preempt); i++ {
			span := work.wbufSpans.free.first
			if span == nil {
				break
			}
			work.wbufSpans.free.remove(span)
			mheap_.freeManual(span, spanAllocWorkBuf)
		}
	})
	more := !work.wbufSpans.free.isEmpty()
	unlock(&work.wbufSpans.lock)
	return more
}
// freeSomeWbufs frees some workbufs back to the heap and returns
// true if it should be called again to free more.
freeSomeWbufs frees some workbufs back to the heap and returns
true if it should be called again to free more.
// freeSomeWbufs frees some workbufs back to the heap and returns // true if it should be called again to free more .
func freeSomeWbufs(preemptible bool) bool {
	const batchSize = 64 
	lock(&work.wbufSpans.lock)
	if gcphase != _GCoff || work.wbufSpans.free.isEmpty() {
		unlock(&work.wbufSpans.lock)
		return false
	}
	systemstack(func() {
		gp := getg().m.curg
		for i := 0; i < batchSize && !(preemptible && gp.preempt); i++ {
			span := work.wbufSpans.free.first
			if span == nil {
				break
			}
			work.wbufSpans.free.remove(span)
			mheap_.freeManual(span, spanAllocWorkBuf)
		}
	})
	more := !work.wbufSpans.free.isEmpty()
	unlock(&work.wbufSpans.lock)
	return more
}
func freeSomeWbufs ( preemptible bool ) bool { const batchSize = 64 lock ( & work . wbufSpans . lock ) if gcphase != _GCoff || work . wbufSpans . free . isEmpty ( ) { unlock ( & work . wbufSpans . lock ) return false } systemstack ( func ( ) { gp := getg ( ) . m . curg for i := 0 ; i < batchSize && ! ( preemptible && gp . preempt ) ; i ++ { span := work . wbufSpans . free . first if span == nil { break } work . wbufSpans . free . remove ( span ) mheap_ . freeManual ( span , spanAllocWorkBuf ) } } ) more := ! work . wbufSpans . free . isEmpty ( ) unlock ( & work . wbufSpans . lock ) return more }
freeSomeWbufs frees some workbufs back to the heap and returns
true if it should be called again to free more.
freeSomeWbufs frees some workbufs back to the heap and returns true if it should be called again to free more .
// ~1–2 µs per span.