runtime: pass gcWork to markroot
runtime: pass gcWork to markroot

Currently markroot uses a gcWork on the stack and disposes of it
immediately after marking one root. This used to be necessary because
markroot was called from the depths of parfor, but now that we call it
directly and have ready access to a gcWork at the call site, pass the
gcWork in, use it directly in markroot, and share it across calls to
markroot from the same P.

Change-Id: Id7c3b811bfb944153760e01873c07c8d18909be1
Reviewed-on: https://go-review.googlesource.com/19635
Reviewed-by: Rick Hudson <838bd060584c511f21c75c69ea04b7b120d86af0@golang.org>
Run-TryBot: Austin Clements <7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com>

nawawi/go,linux-on-ibm-z/go,golang/go,ganboing/go-esx,Samurais/go,theif519/go,goodlang/good,polyverse-security/go,josharian/go,goodlang/good,ganboing/go-esx,vsekhar/elastic-go,codestation/go,vsekhar/elastic-go,CAFxX/go,golang/go,CAFxX/go,suncycheng/go,vanloswang/go,miolini/go,nawawi/go,cloudflare/go,codestation/go,polyverse-security/go,suncycheng/go,derekmarcotte/go,nawawi/go,vsekhar/elastic-go,Samurais/go,Samurais/go,miolini/go,suncycheng/go,mwhudson/go,theif519/go,josharian/go,momchil-velikov/go,momchil-velikov/go,miolini/go,binarycrusader/go,derekmarcotte/go,ImJasonH/go,Samurais/go,ImJasonH/go,cloudflare/go,binarycrusader/go,akutz/go,4ad/go,codestation/go,miolini/go,josharian/go,codestation/go,cloudflare/go,4ad/go,binarycrusader/go,momchil-velikov/go,suncycheng/go,Samurais/go,Cofyc/go,mwhudson/go,momchil-velikov/go,ImJasonH/go,goodlang/good,nawawi/go,codestation/go,josharian/go,josharian/go,CAFxX/go,vanloswang/go,momchil-velikov/go,ganboing/go-esx,derekmarcotte/go,Samurais/go,linux-on-ibm-z/go,akutz/go,goodlang/good,suncycheng/go,ganboing/go-esx,miolini/go,vanloswang/go,cloudflare/go,linux-on-ibm-z/go,akutz/go,CAFxX/go,goodlang/good,vsekhar/elastic-go,derekmarcotte/go,josharian/go,Samurais/go,akutz/go,cloudflare/go,4ad/go,vanloswang/go,vanloswang/go,golang/go,theif519/go,nawawi/go,Cofyc/go,josharian/go,suncycheng/go,Cofyc/go,vsekhar/elastic-go,ganboing/go-esx,ganboing/go-esx,polyverse-security/go,cloudflare/go,mwhudson/go,polyverse-security/go,golang/go,goodlang/good,mwhudson/go,4ad/go,ImJasonH/go,momchil-velikov/go,polyverse-security/go,theif519/go,polyverse-security/go,linux-on-ibm-z/go,Cofyc/go,binarycrusader/go,vsekhar/elastic-go,4ad/go,CAFxX/go,Cofyc/go,Cofyc/go,binarycrusader/go,suncycheng/go,codestation/go,Samurais/go,derekmarcotte/go,derekmarcotte/go,mwhudson/go,polyverse-security/go,4ad/go,vanloswang/go,akutz/go,vanloswang/go,binarycrusader/go,ImJasonH/go,mwhudson/go,ganboing/go-esx,golang/go,akutz/go,ImJasonH/go,vsekhar/elastic-go,ImJasonH/go,goodlang/good,miolini/go,CAFxX/go,theif519/go,Cofyc/go,derekmarcotte/go,linux-on-ibm-z/go,binarycrusader/go,CAFxX/go,golang/go,polyverse-security/go,mwhudson/go,miolini/go,Cofyc/go,golang/go,codestation/go,golang/go,cloudflare/go,momchil-velikov/go,theif519/go,theif519/go,codestation/go,nawawi/go,derekmarcotte/go,josharian/go,ImJasonH/go,nawawi/go,akutz/go,miolini/go,akutz/go,theif519/go,momchil-velikov/go,binarycrusader/go,nawawi/go,linux-on-ibm-z/go,goodlang/good,christopher-henderson/Go,CAFxX/go,ganboing/go-esx,4ad/go,vsekhar/elastic-go,cloudflare/go,4ad/go,suncycheng/go,vanloswang/go,mwhudson/go,linux-on-ibm-z/go,linux-on-ibm-z/go