]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: tricky replacements of _g_ in trace.go
authorMichael Pratt <mpratt@google.com>
Thu, 11 Feb 2021 19:09:10 +0000 (14:09 -0500)
committerMichael Pratt <mpratt@google.com>
Tue, 2 Aug 2022 18:51:22 +0000 (18:51 +0000)
Like previous CLs, cases where the getg() G is used only to access the M
are replaced with direct uses of mp.

Change-Id: I4740c80d6b4997d051a52afcfa8c087e0317dab3
Reviewed-on: https://go-review.googlesource.com/c/go/+/418579
Reviewed-by: Austin Clements <austin@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Pratt <mpratt@google.com>

src/runtime/trace.go

index 409f10c838be42cd73f9a33996cba97b0c191019..4793d191e8974ad25de0739a68227231df049f3d 100644 (file)
@@ -232,14 +232,12 @@ func StartTrace() error {
        // - or GoSysExit appears for a goroutine for which we don't emit EvGoInSyscall below.
        // To instruct traceEvent that it must not ignore events below, we set startingtrace.
        // trace.enabled is set afterwards once we have emitted all preliminary events.
-       _g_ := getg()
-       _g_.m.startingtrace = true
+       mp := getg().m
+       mp.startingtrace = true
 
        // Obtain current stack ID to use in all traceEvGoCreate events below.
-       mp := acquirem()
        stkBuf := make([]uintptr, traceStackSize)
        stackID := traceStackID(mp, stkBuf, 2)
-       releasem(mp)
 
        profBuf := newProfBuf(2, profBufWordCount, profBufTagCount) // after the timestamp, header is [pp.id, gp.goid]
        trace.cpuLogRead = profBuf
@@ -293,7 +291,7 @@ func StartTrace() error {
        trace.strings = make(map[string]uint64)
 
        trace.seqGC = 0
-       _g_.m.startingtrace = false
+       mp.startingtrace = false
        trace.enabled = true
 
        // Register runtime goroutine labels.
@@ -782,19 +780,18 @@ func traceReadCPU() {
 }
 
 func traceStackID(mp *m, buf []uintptr, skip int) uint64 {
-       _g_ := getg()
-       gp := mp.curg
+       gp := getg()
+       curgp := mp.curg
        var nstk int
-       if gp == _g_ {
+       if curgp == gp {
                nstk = callers(skip+1, buf)
-       } else if gp != nil {
-               gp = mp.curg
-               nstk = gcallers(gp, skip, buf)
+       } else if curgp != nil {
+               nstk = gcallers(curgp, skip, buf)
        }
        if nstk > 0 {
                nstk-- // skip runtime.goexit
        }
-       if nstk > 0 && gp.goid == 1 {
+       if nstk > 0 && curgp.goid == 1 {
                nstk-- // skip runtime.main
        }
        id := trace.stackTab.put(buf[:nstk])