func (w *gcWork) balance() {
	if w.wbuf1 == nil {
		return
	}
	if wbuf := w.wbuf2; wbuf.nobj != 0 {
		putfull(wbuf)
		w.flushedWork = true
		w.wbuf2 = getempty()
	} else if wbuf := w.wbuf1; wbuf.nobj > 4 {
		w.wbuf1 = handoff(wbuf)
		w.flushedWork = true // handoff did putfull
	} else {
		return
	}
	// We flushed a buffer to the full list, so wake a worker.
	if gcphase == _GCmark {
		gcController.enlistWorker()
	}
}
// balance moves some work that's cached in this gcWork back on the
// global queue.
//
//go:nowritebarrierrec
balance moves some work that's cached in this gcWork back on the
global queue.

nowritebarrierrec
// balance moves some work that ' s cached in this gcWork back on the // global queue . // // go : nowritebarrierrec
func (w *gcWork) balance() {
	if w.wbuf1 == nil {
		return
	}
	if wbuf := w.wbuf2; wbuf.nobj != 0 {
		putfull(wbuf)
		w.flushedWork = true
		w.wbuf2 = getempty()
	} else if wbuf := w.wbuf1; wbuf.nobj > 4 {
		w.wbuf1 = handoff(wbuf)
		w.flushedWork = true 
	} else {
		return
	}
	if gcphase == _GCmark {
		gcController.enlistWorker()
	}
}
func ( w * gcWork ) balance ( ) { if w . wbuf1 == nil { return } if wbuf := w . wbuf2 ; wbuf . nobj != 0 { putfull ( wbuf ) w . flushedWork = true w . wbuf2 = getempty ( ) } else if wbuf := w . wbuf1 ; wbuf . nobj > 4 { w . wbuf1 = handoff ( wbuf ) w . flushedWork = true } else { return } if gcphase == _GCmark { gcController . enlistWorker ( ) } }
balance moves some work that's cached in this gcWork back on the
global queue.
balance moves some work that ' s cached in this gcWork back on the global queue .
// handoff did putfull // We flushed a buffer to the full list, so wake a worker.