aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go
diff options
context:
space:
mode:
authorDmitri Shuralyov <dmitshur@golang.org>2024-02-15 23:59:52 -0500
committerGopher Robot <gobot@golang.org>2024-02-16 15:19:53 +0000
commit63dd79c07b0026b58f421a5273c41e705ccb73d1 (patch)
tree78ae03458e1b1f1ea8e3dde24533f6b4eb1af94e /src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go
parent3b51581261704bfc3e6feeb29b6d2588b163777d (diff)
downloadgo-63dd79c07b0026b58f421a5273c41e705ccb73d1.tar.xz
cmd/pprof: update vendored github.com/google/pprof
Pull in the latest published version of github.com/google/pprof as part of the continuous process of keeping Go's dependencies up to date. Done with: go get github.com/google/pprof go mod tidy go mod vendor For #36905. Fixes #65741. Change-Id: Ice7b085c03ff69be97929cbe47bfd91954907529 Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64-longtest Reviewed-on: https://go-review.googlesource.com/c/go/+/564636 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com>
Diffstat (limited to 'src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go')
-rw-r--r--src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go106
1 files changed, 0 insertions, 106 deletions
diff --git a/src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go b/src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go
deleted file mode 100644
index fbeb765dbc..0000000000
--- a/src/cmd/vendor/github.com/google/pprof/internal/driver/flamegraph.go
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package driver
-
-import (
- "encoding/json"
- "html/template"
- "net/http"
- "strings"
-
- "github.com/google/pprof/internal/graph"
- "github.com/google/pprof/internal/measurement"
- "github.com/google/pprof/internal/report"
-)
-
-type treeNode struct {
- Name string `json:"n"`
- FullName string `json:"f"`
- Cum int64 `json:"v"`
- CumFormat string `json:"l"`
- Percent string `json:"p"`
- Children []*treeNode `json:"c"`
-}
-
-// flamegraph generates a web page containing a flamegraph.
-func (ui *webInterface) flamegraph(w http.ResponseWriter, req *http.Request) {
- // Force the call tree so that the graph is a tree.
- // Also do not trim the tree so that the flame graph contains all functions.
- rpt, errList := ui.makeReport(w, req, []string{"svg"}, func(cfg *config) {
- cfg.CallTree = true
- cfg.Trim = false
- })
- if rpt == nil {
- return // error already reported
- }
-
- // Generate dot graph.
- g, config := report.GetDOT(rpt)
- var nodes []*treeNode
- nroots := 0
- rootValue := int64(0)
- nodeArr := []string{}
- nodeMap := map[*graph.Node]*treeNode{}
- // Make all nodes and the map, collect the roots.
- for _, n := range g.Nodes {
- v := n.CumValue()
- fullName := n.Info.PrintableName()
- node := &treeNode{
- Name: graph.ShortenFunctionName(fullName),
- FullName: fullName,
- Cum: v,
- CumFormat: config.FormatValue(v),
- Percent: strings.TrimSpace(measurement.Percentage(v, config.Total)),
- }
- nodes = append(nodes, node)
- if len(n.In) == 0 {
- nodes[nroots], nodes[len(nodes)-1] = nodes[len(nodes)-1], nodes[nroots]
- nroots++
- rootValue += v
- }
- nodeMap[n] = node
- // Get all node names into an array.
- nodeArr = append(nodeArr, n.Info.Name)
- }
- // Populate the child links.
- for _, n := range g.Nodes {
- node := nodeMap[n]
- for child := range n.Out {
- node.Children = append(node.Children, nodeMap[child])
- }
- }
-
- rootNode := &treeNode{
- Name: "root",
- FullName: "root",
- Cum: rootValue,
- CumFormat: config.FormatValue(rootValue),
- Percent: strings.TrimSpace(measurement.Percentage(rootValue, config.Total)),
- Children: nodes[0:nroots],
- }
-
- // JSON marshalling flame graph
- b, err := json.Marshal(rootNode)
- if err != nil {
- http.Error(w, "error serializing flame graph", http.StatusInternalServerError)
- ui.options.UI.PrintErr(err)
- return
- }
-
- ui.render(w, req, "flamegraph", rpt, errList, config.Labels, webArgs{
- FlameGraph: template.JS(b),
- Nodes: nodeArr,
- })
-}