diff options
author | Austin Clements <austin@google.com> | 2017-03-07 16:38:29 -0500 |
---|---|---|
committer | Austin Clements <austin@google.com> | 2017-03-19 22:42:24 +0000 |
commit | 13ae271d5d007dcd630d9f43d6a43016b9af6e5c (patch) | |
tree | e49da3d7b91e5a729a717ee60b9e6025d67f6063 /src/runtime/mgcwork.go | |
parent | 2805d206890344f685579ac5b72ba2d9e5da485d (diff) | |
download | go-13ae271d5d007dcd630d9f43d6a43016b9af6e5c.tar.gz go-13ae271d5d007dcd630d9f43d6a43016b9af6e5c.zip |
runtime: introduce a type for lfstacks
The lfstack API is still a C-style API: lfstacks all have unhelpful
type uint64 and the APIs are package-level functions. Make the code
more readable and Go-style by creating an lfstack type with methods
for push, pop, and empty.
Change-Id: I64685fa3be0e82ae2d1a782a452a50974440a827
Reviewed-on: https://go-review.googlesource.com/38290
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
Diffstat (limited to 'src/runtime/mgcwork.go')
-rw-r--r-- | src/runtime/mgcwork.go | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/runtime/mgcwork.go b/src/runtime/mgcwork.go index 6b0c4dccaa..1df40d2afe 100644 --- a/src/runtime/mgcwork.go +++ b/src/runtime/mgcwork.go @@ -312,7 +312,7 @@ func (b *workbuf) checkempty() { func getempty() *workbuf { var b *workbuf if work.empty != 0 { - b = (*workbuf)(lfstackpop(&work.empty)) + b = (*workbuf)(work.empty.pop()) if b != nil { b.checkempty() } @@ -324,11 +324,11 @@ func getempty() *workbuf { } // putempty puts a workbuf onto the work.empty list. -// Upon entry this go routine owns b. The lfstackpush relinquishes ownership. +// Upon entry this go routine owns b. The lfstack.push relinquishes ownership. //go:nowritebarrier func putempty(b *workbuf) { b.checkempty() - lfstackpush(&work.empty, &b.node) + work.empty.push(&b.node) } // putfull puts the workbuf on the work.full list for the GC. @@ -337,14 +337,14 @@ func putempty(b *workbuf) { //go:nowritebarrier func putfull(b *workbuf) { b.checknonempty() - lfstackpush(&work.full, &b.node) + work.full.push(&b.node) } // trygetfull tries to get a full or partially empty workbuffer. // If one is not immediately available return nil //go:nowritebarrier func trygetfull() *workbuf { - b := (*workbuf)(lfstackpop(&work.full)) + b := (*workbuf)(work.full.pop()) if b != nil { b.checknonempty() return b @@ -365,7 +365,7 @@ func trygetfull() *workbuf { // phase. //go:nowritebarrier func getfull() *workbuf { - b := (*workbuf)(lfstackpop(&work.full)) + b := (*workbuf)(work.full.pop()) if b != nil { b.checknonempty() return b @@ -383,7 +383,7 @@ func getfull() *workbuf { println("runtime: work.nwait=", decnwait, "work.nproc=", work.nproc) throw("work.nwait > work.nproc") } - b = (*workbuf)(lfstackpop(&work.full)) + b = (*workbuf)(work.full.pop()) if b != nil { b.checknonempty() return b |