]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] runtime/pprof: replace funcPC with internal/abi.FuncPCABIInternal
authorCherry Mui <cherryyz@google.com>
Fri, 21 May 2021 22:13:04 +0000 (18:13 -0400)
committerCherry Mui <cherryyz@google.com>
Mon, 24 May 2021 21:05:06 +0000 (21:05 +0000)
All funcPC references are ABIInternal functions. Replace with the
intrinsics.

Change-Id: I2266bb6d2b713eb63b6a09846e9f9c423cab6e9b
Reviewed-on: https://go-review.googlesource.com/c/go/+/322349
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/runtime/pprof/pprof.go
src/runtime/pprof/pprof_test.go
src/runtime/pprof/proto.go
src/runtime/pprof/proto_test.go

index 99eda10f1c1adac61215004db6bda8488ad37a85..000abf935c27a94afacb791eb9eaa6c325d494e2 100644 (file)
@@ -76,6 +76,7 @@ import (
        "bufio"
        "bytes"
        "fmt"
+       "internal/abi"
        "io"
        "runtime"
        "sort"
@@ -289,7 +290,7 @@ func (p *Profile) Add(value interface{}, skip int) {
        stk = stk[:n]
        if len(stk) == 0 {
                // The value for skip is too large, and there's no stack trace to record.
-               stk = []uintptr{funcPC(lostProfileEvent)}
+               stk = []uintptr{abi.FuncPCABIInternal(lostProfileEvent)}
        }
 
        p.mu.Lock()
index 7cbb4fc7ae4e41ea7fdac596254ee206ee0807a6..cfcf379d1f4fc9fc4ab76ccecd5a635494cbb517 100644 (file)
@@ -11,6 +11,7 @@ import (
        "bytes"
        "context"
        "fmt"
+       "internal/abi"
        "internal/profile"
        "internal/testenv"
        "io"
@@ -116,7 +117,7 @@ func containsInlinedCall(f interface{}, maxBytes int) bool {
 // findInlinedCall returns the PC of an inlined function call within
 // the function body for the function f if any.
 func findInlinedCall(f interface{}, maxBytes int) (pc uint64, found bool) {
-       fFunc := runtime.FuncForPC(uintptr(funcPC(f)))
+       fFunc := runtime.FuncForPC(uintptr(abi.FuncPCABIInternal(f)))
        if fFunc == nil || fFunc.Entry() == 0 {
                panic("failed to locate function entry")
        }
index bdb4454b6e1cc8d4c46f7ceead5bf9e2f01a77cc..686251395663f32358e39bc283513c13effedb34 100644 (file)
@@ -8,6 +8,7 @@ import (
        "bytes"
        "compress/gzip"
        "fmt"
+       "internal/abi"
        "io"
        "os"
        "runtime"
@@ -21,11 +22,6 @@ import (
 // (The name shows up in the pprof graphs.)
 func lostProfileEvent() { lostProfileEvent() }
 
-// funcPC returns the PC for the func value f.
-func funcPC(f interface{}) uintptr {
-       return *(*[2]*uintptr)(unsafe.Pointer(&f))[1]
-}
-
 // A profileBuilder writes a profile incrementally from a
 // stream of profile samples delivered by the runtime.
 type profileBuilder struct {
@@ -325,7 +321,7 @@ func (b *profileBuilder) addCPUData(data []uint64, tags []unsafe.Pointer) error
                                // gentraceback guarantees that PCs in the
                                // stack can be unconditionally decremented and
                                // still be valid, so we must do the same.
-                               uint64(funcPC(lostProfileEvent) + 1),
+                               uint64(abi.FuncPCABIInternal(lostProfileEvent) + 1),
                        }
                }
                b.m.lookup(stk, tag).count += int64(count)
index 5eb1aab14012a1d9167a8535c763788a783637db..d052b9fa421d699c660020b62a4764119e873e15 100644 (file)
@@ -8,6 +8,7 @@ import (
        "bytes"
        "encoding/json"
        "fmt"
+       "internal/abi"
        "internal/profile"
        "internal/testenv"
        "os"
@@ -97,11 +98,11 @@ func testPCs(t *testing.T) (addr1, addr2 uint64, map1, map2 *profile.Mapping) {
                map2 = mprof.Mapping[1]
                map2.BuildID, _ = elfBuildID(map2.File)
        case "js":
-               addr1 = uint64(funcPC(f1))
-               addr2 = uint64(funcPC(f2))
+               addr1 = uint64(abi.FuncPCABIInternal(f1))
+               addr2 = uint64(abi.FuncPCABIInternal(f2))
        default:
-               addr1 = uint64(funcPC(f1))
-               addr2 = uint64(funcPC(f2))
+               addr1 = uint64(abi.FuncPCABIInternal(f1))
+               addr2 = uint64(abi.FuncPCABIInternal(f2))
                // Fake mapping - HasFunctions will be true because two PCs from Go
                // will be fully symbolized.
                fake := &profile.Mapping{ID: 1, HasFunctions: true}