]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: actually fix locking in BenchmarkMSpanCountAlloc
authorMichael Anthony Knyszek <mknyszek@google.com>
Wed, 16 Sep 2020 17:08:55 +0000 (17:08 +0000)
committerMichael Knyszek <mknyszek@google.com>
Wed, 16 Sep 2020 17:36:58 +0000 (17:36 +0000)
I just submitted CL 255297 which mostly fixed this problem, but totally
forgot to actually acquire/release the heap lock. Oops.

Updates #41391.

Change-Id: I45b42f20a9fc765c4de52476db3654d4bfe9feb3
Reviewed-on: https://go-review.googlesource.com/c/go/+/255298
Trust: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>

src/runtime/export_test.go

index e3d6441c18aed04212dad4ed939ef9505bef6452..f2fa11dc9884e387f3efef4ce536f77cc52856ad 100644 (file)
@@ -991,7 +991,9 @@ type MSpan mspan
 func AllocMSpan() *MSpan {
        var s *mspan
        systemstack(func() {
+               lock(&mheap_.lock)
                s = (*mspan)(mheap_.spanalloc.alloc())
+               unlock(&mheap_.lock)
        })
        return (*MSpan)(s)
 }
@@ -999,7 +1001,9 @@ func AllocMSpan() *MSpan {
 // Free an allocated mspan.
 func FreeMSpan(s *MSpan) {
        systemstack(func() {
+               lock(&mheap_.lock)
                mheap_.spanalloc.free(unsafe.Pointer(s))
+               unlock(&mheap_.lock)
        })
 }