Lines Matching full:workbuf
25 // A wbufptr holds a workbuf*, but protects it from write barriers.
27 // Write barriers on workbuf pointers may also be dangerous in the GC.
30 func wbufptrOf(w *workbuf) wbufptr {
34 func (wp wbufptr) ptr() *workbuf {
35 return (*workbuf)(unsafe.Pointer(wp))
165 throw("dispose: workbuf is empty")
207 inuse bool // This workbuf is in use by some gorotuine and is not on the work.empty/partial/full queues.
208 log [4]int // line numbers forming a history of ownership changes to workbuf
211 type workbuf struct {
217 // workbuf factory routines. These funcs are used to manage the
222 // to record a brief history of changes to ownership of the workbuf.
229 func (b *workbuf) logget(entry int) {
246 func (b *workbuf) logput(entry int) {
261 func (b *workbuf) checknonempty() {
266 throw("workbuf is empty")
270 func (b *workbuf) checkempty() {
275 throw("workbuf is not empty")
283 func getempty(entry int) *workbuf {
284 var b *workbuf
286 b = (*workbuf)(lfstackpop(&work.empty))
292 b = (*workbuf)(persistentalloc(unsafe.Sizeof(*b), _CacheLineSize, &memstats.gc_sys))
298 // putempty puts a workbuf onto the work.empty list.
301 func putempty(b *workbuf, entry int) {
307 // putfull puts the workbuf on the work.full list for the GC.
311 func putfull(b *workbuf, entry int) {
323 func getpartialorempty(entry int) *workbuf {
324 b := (*workbuf)(lfstackpop(&work.partial))
343 func putpartial(b *workbuf, entry int) {
353 throw("putpartial: bad Workbuf b.nobj")
360 func trygetfull(entry int) *workbuf {
361 b := (*workbuf)(lfstackpop(&work.full))
363 b = (*workbuf)(lfstackpop(&work.partial))
386 func getfull(entry int) *workbuf {
387 b := (*workbuf)(lfstackpop(&work.full))
393 b = (*workbuf)(lfstackpop(&work.partial))
411 b = (*workbuf)(lfstackpop(&work.full))
413 b = (*workbuf)(lfstackpop(&work.partial))
444 func handoff(b *workbuf) *workbuf {