runtime: lock-free fast path for mark bits allocation
runtime: lock-free fast path for mark bits allocation

Currently we acquire a global lock for every newMarkBits call. This is
unfortunate since every span sweep operation calls newMarkBits.

However, most allocations are simply linear allocations from the
current arena. Take advantage of this to add a lock-free fast path for
allocating from the current arena. With this change, the global lock
only protects the lists of arenas, not the free offset in the current
arena.

Change-Id: I6cf6182af8492c8bfc21276114c77275fe3d7826
Reviewed-on: https://go-review.googlesource.com/34595
Run-TryBot: Austin Clements <7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com>
TryBot-Result: Gobot Gobot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Reviewed-by: Rick Hudson <838bd060584c511f21c75c69ea04b7b120d86af0@golang.org>

vsekhar/elastic-go,Cofyc/go,Cofyc/go,linux-on-ibm-z/go,linux-on-ibm-z/go,derekmarcotte/go,ImJasonH/go,josharian/go,akutz/go,derekmarcotte/go,nawawi/go,CAFxX/go,linux-on-ibm-z/go,codestation/go,nawawi/go,christopher-henderson/Go,vsekhar/elastic-go,polyverse-security/go,linux-on-ibm-z/go,codestation/go,nawawi/go,polyverse-security/go,akutz/go,ImJasonH/go,cloudflare/go,josharian/go,cloudflare/go,vsekhar/elastic-go,CAFxX/go,Cofyc/go,Cofyc/go,cloudflare/go,codestation/go,ImJasonH/go,derekmarcotte/go,cloudflare/go,derekmarcotte/go,codestation/go,Cofyc/go,polyverse-security/go,linux-on-ibm-z/go,akutz/go,polyverse-security/go,cloudflare/go,CAFxX/go,Cofyc/go,josharian/go,codestation/go,polyverse-security/go,golang/go,golang/go,nawawi/go,ImJasonH/go,codestation/go,golang/go,golang/go,derekmarcotte/go,nawawi/go,ImJasonH/go,akutz/go,akutz/go,linux-on-ibm-z/go,ImJasonH/go,josharian/go,derekmarcotte/go,cloudflare/go,golang/go,ImJasonH/go,linux-on-ibm-z/go,akutz/go,polyverse-security/go,nawawi/go,Cofyc/go,CAFxX/go,ImJasonH/go,nawawi/go,golang/go,golang/go,CAFxX/go,josharian/go,polyverse-security/go,vsekhar/elastic-go,vsekhar/elastic-go,codestation/go,nawawi/go,akutz/go,cloudflare/go,Cofyc/go,linux-on-ibm-z/go,cloudflare/go,vsekhar/elastic-go,polyverse-security/go,derekmarcotte/go,josharian/go,CAFxX/go,josharian/go,vsekhar/elastic-go,golang/go,derekmarcotte/go,CAFxX/go,codestation/go,akutz/go,vsekhar/elastic-go,josharian/go,CAFxX/go