aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/runtime/symtab_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/runtime/symtab_test.go')
-rw-r--r--libgo/go/runtime/symtab_test.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/libgo/go/runtime/symtab_test.go b/libgo/go/runtime/symtab_test.go
index ddf64f6..920db09 100644
--- a/libgo/go/runtime/symtab_test.go
+++ b/libgo/go/runtime/symtab_test.go
@@ -256,3 +256,35 @@ func TestFunctionAlignmentTraceback(t *testing.T) {
t.Errorf("frames.Next() got %+v want %+v", frame.Func, f)
}
}
+
+func BenchmarkFunc(b *testing.B) {
+ pc, _, _, ok := runtime.Caller(0)
+ if !ok {
+ b.Fatal("failed to look up PC")
+ }
+ f := runtime.FuncForPC(pc)
+ b.Run("Name", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ name := f.Name()
+ if name != "runtime_test.BenchmarkFunc" {
+ b.Fatalf("unexpected name %q", name)
+ }
+ }
+ })
+ b.Run("Entry", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ pc := f.Entry()
+ if pc == 0 {
+ b.Fatal("zero PC")
+ }
+ }
+ })
+ b.Run("FileLine", func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ file, line := f.FileLine(pc)
+ if !strings.HasSuffix(file, "symtab_test.go") || line == 0 {
+ b.Fatalf("unexpected file/line %q:%d", file, line)
+ }
+ }
+ })
+}