diff options
| author | Austin Clements <austin@google.com> | 2018-09-26 15:36:28 -0400 |
|---|---|---|
| committer | Austin Clements <austin@google.com> | 2018-10-09 16:44:45 +0000 |
| commit | 1d09433ec072c2acff27335c2d05ce44bb501ecc (patch) | |
| tree | 9942e7ab7e5084be822a7c38c5242965babf8263 | |
| parent | 3f86d7cc6762a5f6745cdcda4bd50031bfafc92f (diff) | |
| download | go-1d09433ec072c2acff27335c2d05ce44bb501ecc.tar.xz | |
runtime: undo manual inlining of mbits.setMarked
Since atomic.Or8 is now an intrinsic (and has been for some time),
markBits.setMarked is inlinable. Undo the manual inlining of it.
Change-Id: I8e37ccf0851ad1d3088d9c8ae0f6f0c439d7eb2d
Reviewed-on: https://go-review.googlesource.com/c/138659
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
| -rw-r--r-- | src/runtime/mbitmap.go | 4 | ||||
| -rw-r--r-- | src/runtime/mgcmark.go | 3 |
2 files changed, 2 insertions, 5 deletions
diff --git a/src/runtime/mbitmap.go b/src/runtime/mbitmap.go index 87fa027b4e..4854c0e632 100644 --- a/src/runtime/mbitmap.go +++ b/src/runtime/mbitmap.go @@ -283,9 +283,7 @@ func (m markBits) isMarked() bool { return *m.bytep&m.mask != 0 } -// setMarked sets the marked bit in the markbits, atomically. Some compilers -// are not able to inline atomic.Or8 function so if it appears as a hot spot consider -// inlining it manually. +// setMarked sets the marked bit in the markbits, atomically. func (m markBits) setMarked() { // Might be racing with other updates, so use atomic update always. // We used to be clever here and use a non-atomic update in certain diff --git a/src/runtime/mgcmark.go b/src/runtime/mgcmark.go index d4dcfb6cb9..14f09700ee 100644 --- a/src/runtime/mgcmark.go +++ b/src/runtime/mgcmark.go @@ -1228,8 +1228,7 @@ func greyobject(obj, base, off uintptr, span *mspan, gcw *gcWork, objIndex uintp if mbits.isMarked() { return } - // mbits.setMarked() // Avoid extra call overhead with manual inlining. - atomic.Or8(mbits.bytep, mbits.mask) + mbits.setMarked() // If this is a noscan object, fast-track it to black // instead of greying it. if span.spanclass.noscan() { |
