aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/gc/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/compile/internal/gc/util.go')
-rw-r--r--src/cmd/compile/internal/gc/util.go16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/cmd/compile/internal/gc/util.go b/src/cmd/compile/internal/gc/util.go
index 56fd137de2..dcac0ce79a 100644
--- a/src/cmd/compile/internal/gc/util.go
+++ b/src/cmd/compile/internal/gc/util.go
@@ -8,12 +8,11 @@ import (
"os"
"runtime"
"runtime/pprof"
+ tracepkg "runtime/trace"
"cmd/compile/internal/base"
)
-var traceHandler func(string)
-
func startProfile() {
if base.Flag.CPUProfile != "" {
f, err := os.Create(base.Flag.CPUProfile)
@@ -64,13 +63,20 @@ func startProfile() {
if err != nil {
base.Fatalf("%v", err)
}
- startMutexProfiling()
+ runtime.SetMutexProfileFraction(1)
base.AtExit(func() {
pprof.Lookup("mutex").WriteTo(f, 0)
f.Close()
})
}
- if base.Flag.TraceProfile != "" && traceHandler != nil {
- traceHandler(base.Flag.TraceProfile)
+ if base.Flag.TraceProfile != "" {
+ f, err := os.Create(base.Flag.TraceProfile)
+ if err != nil {
+ base.Fatalf("%v", err)
+ }
+ if err := tracepkg.Start(f); err != nil {
+ base.Fatalf("%v", err)
+ }
+ base.AtExit(tracepkg.Stop)
}
}