mirror of https://github.com/golang/go.git
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>
This commit is contained in:
parent
3f86d7cc67
commit
1d09433ec0
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue