Source file
src/cmd/trace/viewer.go
1
2
3
4
5 package main
6
7 import (
8 "fmt"
9 "internal/trace"
10 "internal/trace/traceviewer"
11 "slices"
12 "time"
13 )
14
15
16
17 func viewerFrames(stk trace.Stack) []trace.StackFrame {
18 return slices.Collect(stk.Frames())
19 }
20
21 func viewerGState(state trace.GoState, inMarkAssist bool) traceviewer.GState {
22 switch state {
23 case trace.GoUndetermined:
24 return traceviewer.GDead
25 case trace.GoNotExist:
26 return traceviewer.GDead
27 case trace.GoRunnable:
28 return traceviewer.GRunnable
29 case trace.GoRunning:
30 return traceviewer.GRunning
31 case trace.GoWaiting:
32 if inMarkAssist {
33 return traceviewer.GWaitingGC
34 }
35 return traceviewer.GWaiting
36 case trace.GoSyscall:
37
38 return traceviewer.GRunning
39 default:
40 panic(fmt.Sprintf("unknown GoState: %s", state.String()))
41 }
42 }
43
44 func viewerTime(t time.Duration) float64 {
45 return float64(t) / float64(time.Microsecond)
46 }
47
View as plain text