1 // Copyright 2012 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
25 func (TS
) Method1() {}
26 func (TS
) Method2() {}
27 func (TM
) Method1() {}
28 func (TM
) Method2() {}
29 func (TL
) Method1() {}
30 func (TL
) Method2() {}
44 func TestCmpIfaceConcreteAlloc(t
*testing
.T
) {
45 if runtime
.Compiler
!= "gc" {
46 t
.Skip("skipping on non-gc compiler")
49 n
:= testing
.AllocsPerRun(1, func() {
56 t
.Fatalf("iface cmp allocs=%v; want 0", n
)
60 func BenchmarkEqEfaceConcrete(b
*testing
.B
) {
61 for i
:= 0; i
< b
.N
; i
++ {
66 func BenchmarkEqIfaceConcrete(b
*testing
.B
) {
67 for i
:= 0; i
< b
.N
; i
++ {
72 func BenchmarkNeEfaceConcrete(b
*testing
.B
) {
73 for i
:= 0; i
< b
.N
; i
++ {
78 func BenchmarkNeIfaceConcrete(b
*testing
.B
) {
79 for i
:= 0; i
< b
.N
; i
++ {
84 func BenchmarkConvT2ESmall(b
*testing
.B
) {
85 for i
:= 0; i
< b
.N
; i
++ {
90 func BenchmarkConvT2EUintptr(b
*testing
.B
) {
91 for i
:= 0; i
< b
.N
; i
++ {
96 func BenchmarkConvT2ELarge(b
*testing
.B
) {
97 for i
:= 0; i
< b
.N
; i
++ {
102 func BenchmarkConvT2ISmall(b
*testing
.B
) {
103 for i
:= 0; i
< b
.N
; i
++ {
108 func BenchmarkConvT2IUintptr(b
*testing
.B
) {
109 for i
:= 0; i
< b
.N
; i
++ {
114 func BenchmarkConvT2ILarge(b
*testing
.B
) {
115 for i
:= 0; i
< b
.N
; i
++ {
120 func BenchmarkConvI2E(b
*testing
.B
) {
122 for i
:= 0; i
< b
.N
; i
++ {
127 func BenchmarkConvI2I(b
*testing
.B
) {
129 for i
:= 0; i
< b
.N
; i
++ {
134 func BenchmarkAssertE2T(b
*testing
.B
) {
136 for i
:= 0; i
< b
.N
; i
++ {
141 func BenchmarkAssertE2TLarge(b
*testing
.B
) {
143 for i
:= 0; i
< b
.N
; i
++ {
148 func BenchmarkAssertE2I(b
*testing
.B
) {
150 for i
:= 0; i
< b
.N
; i
++ {
155 func BenchmarkAssertI2T(b
*testing
.B
) {
157 for i
:= 0; i
< b
.N
; i
++ {
162 func BenchmarkAssertI2I(b
*testing
.B
) {
164 for i
:= 0; i
< b
.N
; i
++ {
169 func BenchmarkAssertI2E(b
*testing
.B
) {
171 for i
:= 0; i
< b
.N
; i
++ {
176 func BenchmarkAssertE2E(b
*testing
.B
) {
178 for i
:= 0; i
< b
.N
; i
++ {
183 func BenchmarkAssertE2T2(b
*testing
.B
) {
185 for i
:= 0; i
< b
.N
; i
++ {
190 func BenchmarkAssertE2T2Blank(b
*testing
.B
) {
192 for i
:= 0; i
< b
.N
; i
++ {
197 func BenchmarkAssertI2E2(b
*testing
.B
) {
199 for i
:= 0; i
< b
.N
; i
++ {
200 e
, ok
= i1
.(interface{})
204 func BenchmarkAssertI2E2Blank(b
*testing
.B
) {
206 for i
:= 0; i
< b
.N
; i
++ {
207 _
, ok
= i1
.(interface{})
211 func BenchmarkAssertE2E2(b
*testing
.B
) {
213 for i
:= 0; i
< b
.N
; i
++ {
214 e_
, ok
= e
.(interface{})
218 func BenchmarkAssertE2E2Blank(b
*testing
.B
) {
220 for i
:= 0; i
< b
.N
; i
++ {
221 _
, ok
= e
.(interface{})
225 func TestNonEscapingConvT2E(t
*testing
.T
) {
226 m
:= make(map[interface{}]bool)
229 t
.Fatalf("42 is not present in the map")
232 t
.Fatalf("0 is present in the map")
235 n
:= testing
.AllocsPerRun(1000, func() {
237 t
.Fatalf("0 is present in the map")
241 t
.Fatalf("want 0 allocs, got %v", n
)
245 func TestNonEscapingConvT2I(t
*testing
.T
) {
246 m
:= make(map[I1
]bool)
249 t
.Fatalf("42 is not present in the map")
252 t
.Fatalf("0 is present in the map")
255 n
:= testing
.AllocsPerRun(1000, func() {
257 t
.Fatalf("0 is present in the map")
261 t
.Fatalf("want 0 allocs, got %v", n
)