3 // Copyright 2018 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
7 // Test independent goroutines modifying a comprehensive
8 // variety of vars during aggressive garbage collection.
10 // The point is to catch GC regressions like fixedbugs/issue22781.go
32 for i := 0; i < goroutines; i++ {
33 for _, t := range types {
40 var wg2 sync.WaitGroup
41 for j := 0; j < allocs; j++ {
91 type modifier struct {
103 func (a modifier) valid() error {
106 return errors.New("modifier without name")
108 return errors.New(a.name + " missing t")
109 case a.pointerT == nil:
110 return errors.New(a.name + " missing pointerT")
111 case a.arrayT == nil:
112 return errors.New(a.name + " missing arrayT")
113 case a.sliceT == nil:
114 return errors.New(a.name + " missing sliceT")
116 return errors.New(a.name + " missing mapT")
117 case a.mapPointerKeyT == nil:
118 return errors.New(a.name + " missing mapPointerKeyT")
120 return errors.New(a.name + " missing chanT")
121 case a.interfaceT == nil:
122 return errors.New(a.name + " missing interfaceT")
128 var types = []modifier{
133 for i := 0; i < mods; i++ {
139 a := func() *bool { return new(bool) }()
140 for i := 0; i < mods; i++ {
147 for i := 0; i < mods; i++ {
148 for j := 0; j < len(a); j++ {
155 a := make([]bool, length)
156 for i := 0; i < mods; i++ {
157 for j := 0; j < len(a); j++ {
164 a := make(map[bool]bool)
165 for i := 0; i < mods; i++ {
171 mapPointerKeyT: func() {
172 a := make(map[*bool]bool)
173 for i := 0; i < length; i++ {
177 for i := 0; i < mods; i++ {
178 for k, v := range a {
186 for i := 0; i < mods; i++ {
187 go func() { a <- false }()
193 a := interface{}(bool(false))
194 for i := 0; i < mods; i++ {
204 for i := 0; i < mods; i++ {
210 a := func() *uint8 { return new(uint8) }()
211 for i := 0; i < mods; i++ {
218 for i := 0; i < mods; i++ {
219 for j := 0; j < len(a); j++ {
226 a := make([]uint8, length)
227 for i := 0; i < mods; i++ {
228 for j := 0; j < len(a); j++ {
235 a := make(map[uint8]uint8)
236 for i := 0; i < length; i++ {
237 a[uint8(i)] = uint8(i)
240 for i := 0; i < mods; i++ {
241 for k, _ := range a {
247 mapPointerKeyT: func() {
248 a := make(map[*uint8]uint8)
249 for i := 0; i < length; i++ {
250 a[new(uint8)] = uint8(i)
253 for i := 0; i < mods; i++ {
254 for k, _ := range a {
261 a := make(chan uint8)
262 for i := 0; i < mods; i++ {
263 go func() { a <- uint8(i) }()
269 a := interface{}(uint8(0))
270 for i := 0; i < mods; i++ {
280 for i := 0; i < mods; i++ {
286 a := func() *uint16 { return new(uint16) }()
287 for i := 0; i < mods; i++ {
293 a := [length]uint16{}
294 for i := 0; i < mods; i++ {
295 for j := 0; j < len(a); j++ {
302 a := make([]uint16, length)
303 for i := 0; i < mods; i++ {
304 for j := 0; j < len(a); j++ {
311 a := make(map[uint16]uint16)
312 for i := 0; i < length; i++ {
313 a[uint16(i)] = uint16(i)
316 for i := 0; i < mods; i++ {
317 for k, _ := range a {
323 mapPointerKeyT: func() {
324 a := make(map[*uint16]uint16)
325 for i := 0; i < length; i++ {
326 a[new(uint16)] = uint16(i)
329 for i := 0; i < mods; i++ {
330 for k, _ := range a {
337 a := make(chan uint16)
338 for i := 0; i < mods; i++ {
339 go func() { a <- uint16(i) }()
345 a := interface{}(uint16(0))
346 for i := 0; i < mods; i++ {
356 for i := 0; i < mods; i++ {
362 a := func() *uint32 { return new(uint32) }()
363 for i := 0; i < mods; i++ {
369 a := [length]uint32{}
370 for i := 0; i < mods; i++ {
371 for j := 0; j < len(a); j++ {
378 a := make([]uint32, length)
379 for i := 0; i < mods; i++ {
380 for j := 0; j < len(a); j++ {
387 a := make(map[uint32]uint32)
388 for i := 0; i < length; i++ {
389 a[uint32(i)] = uint32(i)
392 for i := 0; i < mods; i++ {
393 for k, _ := range a {
399 mapPointerKeyT: func() {
400 a := make(map[*uint32]uint32)
401 for i := 0; i < length; i++ {
402 a[new(uint32)] = uint32(i)
405 for i := 0; i < mods; i++ {
406 for k, _ := range a {
413 a := make(chan uint32)
414 for i := 0; i < mods; i++ {
415 go func() { a <- uint32(i) }()
421 a := interface{}(uint32(0))
422 for i := 0; i < mods; i++ {
432 for i := 0; i < mods; i++ {
438 a := func() *uint64 { return new(uint64) }()
439 for i := 0; i < mods; i++ {
445 a := [length]uint64{}
446 for i := 0; i < mods; i++ {
447 for j := 0; j < len(a); j++ {
454 a := make([]uint64, length)
455 for i := 0; i < mods; i++ {
456 for j := 0; j < len(a); j++ {
463 a := make(map[uint64]uint64)
464 for i := 0; i < length; i++ {
465 a[uint64(i)] = uint64(i)
468 for i := 0; i < mods; i++ {
469 for k, _ := range a {
475 mapPointerKeyT: func() {
476 a := make(map[*uint64]uint64)
477 for i := 0; i < length; i++ {
478 a[new(uint64)] = uint64(i)
481 for i := 0; i < mods; i++ {
482 for k, _ := range a {
489 a := make(chan uint64)
490 for i := 0; i < mods; i++ {
491 go func() { a <- uint64(i) }()
497 a := interface{}(uint64(0))
498 for i := 0; i < mods; i++ {
508 for i := 0; i < mods; i++ {
514 a := func() *int8 { return new(int8) }()
515 for i := 0; i < mods; i++ {
522 for i := 0; i < mods; i++ {
523 for j := 0; j < len(a); j++ {
530 a := make([]int8, length)
531 for i := 0; i < mods; i++ {
532 for j := 0; j < len(a); j++ {
539 a := make(map[int8]int8)
540 for i := 0; i < length; i++ {
544 for i := 0; i < mods; i++ {
545 for k, _ := range a {
551 mapPointerKeyT: func() {
552 a := make(map[*int8]int8)
553 for i := 0; i < length; i++ {
554 a[new(int8)] = int8(i)
557 for i := 0; i < mods; i++ {
558 for k, _ := range a {
566 for i := 0; i < mods; i++ {
567 go func() { a <- int8(i) }()
573 a := interface{}(int8(0))
574 for i := 0; i < mods; i++ {
584 for i := 0; i < mods; i++ {
590 a := func() *int16 { return new(int16) }()
591 for i := 0; i < mods; i++ {
598 for i := 0; i < mods; i++ {
599 for j := 0; j < len(a); j++ {
606 a := make([]int16, length)
607 for i := 0; i < mods; i++ {
608 for j := 0; j < len(a); j++ {
615 a := make(map[int16]int16)
616 for i := 0; i < length; i++ {
617 a[int16(i)] = int16(i)
620 for i := 0; i < mods; i++ {
621 for k, _ := range a {
627 mapPointerKeyT: func() {
628 a := make(map[*int16]int16)
629 for i := 0; i < length; i++ {
630 a[new(int16)] = int16(i)
633 for i := 0; i < mods; i++ {
634 for k, _ := range a {
641 a := make(chan int16)
642 for i := 0; i < mods; i++ {
643 go func() { a <- int16(i) }()
649 a := interface{}(int16(0))
650 for i := 0; i < mods; i++ {
660 for i := 0; i < mods; i++ {
666 a := func() *int32 { return new(int32) }()
667 for i := 0; i < mods; i++ {
674 for i := 0; i < mods; i++ {
675 for j := 0; j < len(a); j++ {
682 a := make([]int32, length)
683 for i := 0; i < mods; i++ {
684 for j := 0; j < len(a); j++ {
691 a := make(map[int32]int32)
692 for i := 0; i < length; i++ {
693 a[int32(i)] = int32(i)
696 for i := 0; i < mods; i++ {
697 for k, _ := range a {
703 mapPointerKeyT: func() {
704 a := make(map[*int32]int32)
705 for i := 0; i < length; i++ {
706 a[new(int32)] = int32(i)
709 for i := 0; i < mods; i++ {
710 for k, _ := range a {
717 a := make(chan int32)
718 for i := 0; i < mods; i++ {
719 go func() { a <- int32(i) }()
725 a := interface{}(int32(0))
726 for i := 0; i < mods; i++ {
736 for i := 0; i < mods; i++ {
742 a := func() *int64 { return new(int64) }()
743 for i := 0; i < mods; i++ {
750 for i := 0; i < mods; i++ {
751 for j := 0; j < len(a); j++ {
758 a := make([]int64, length)
759 for i := 0; i < mods; i++ {
760 for j := 0; j < len(a); j++ {
767 a := make(map[int64]int64)
768 for i := 0; i < length; i++ {
769 a[int64(i)] = int64(i)
772 for i := 0; i < mods; i++ {
773 for k, _ := range a {
779 mapPointerKeyT: func() {
780 a := make(map[*int64]int64)
781 for i := 0; i < length; i++ {
782 a[new(int64)] = int64(i)
785 for i := 0; i < mods; i++ {
786 for k, _ := range a {
793 a := make(chan int64)
794 for i := 0; i < mods; i++ {
795 go func() { a <- int64(i) }()
801 a := interface{}(int64(0))
802 for i := 0; i < mods; i++ {
812 for i := 0; i < mods; i++ {
818 a := func() *float32 { return new(float32) }()
820 for i := 0; i < mods; i++ {
826 a := [length]float32{}
827 for i := 0; i < length; i++ {
831 for i := 0; i < mods; i++ {
832 for j := 0; j < len(a); j++ {
839 a := make([]float32, length)
840 for i := 0; i < length; i++ {
844 for i := 0; i < mods; i++ {
845 for j := 0; j < len(a); j++ {
852 a := make(map[float32]float32)
853 for i := 0; i < length; i++ {
854 a[float32(i)] = float32(i) + 0.01
857 for i := 0; i < mods; i++ {
858 for k, _ := range a {
864 mapPointerKeyT: func() {
865 a := make(map[*float32]float32)
866 for i := 0; i < length; i++ {
867 a[new(float32)] = float32(i) + 0.01
870 for i := 0; i < mods; i++ {
871 for k, _ := range a {
878 a := make(chan float32)
879 for i := 0; i < mods; i++ {
880 go func() { a <- float32(i) }()
886 a := interface{}(float32(0))
887 for i := 0; i < mods; i++ {
888 a = a.(float32) * 1.01
897 for i := 0; i < mods; i++ {
903 a := func() *float64 { return new(float64) }()
905 for i := 0; i < mods; i++ {
911 a := [length]float64{}
912 for i := 0; i < length; i++ {
916 for i := 0; i < mods; i++ {
917 for j := 0; j < len(a); j++ {
924 a := make([]float64, length)
925 for i := 0; i < length; i++ {
929 for i := 0; i < mods; i++ {
930 for j := 0; j < len(a); j++ {
937 a := make(map[float64]float64)
938 for i := 0; i < length; i++ {
939 a[float64(i)] = float64(i) + 0.01
942 for i := 0; i < mods; i++ {
943 for k, _ := range a {
949 mapPointerKeyT: func() {
950 a := make(map[*float64]float64)
951 for i := 0; i < length; i++ {
952 a[new(float64)] = float64(i) + 0.01
955 for i := 0; i < mods; i++ {
956 for k, _ := range a {
963 a := make(chan float64)
964 for i := 0; i < mods; i++ {
965 go func() { a <- float64(i) }()
971 a := interface{}(float64(0))
972 for i := 0; i < mods; i++ {
973 a = a.(float64) * 1.01
981 c := complex64(complex(float32(1.01), float32(1.01)))
982 for i := 0; i < mods; i++ {
983 c = complex(real(c)*1.01, imag(c)*1.01)
988 a := func() *complex64 { return new(complex64) }()
989 *a = complex64(complex(float32(1.01), float32(1.01)))
990 for i := 0; i < mods; i++ {
991 *a *= complex(real(*a)*1.01, imag(*a)*1.01)
996 a := [length]complex64{}
997 for i := 0; i < length; i++ {
998 a[i] = complex64(complex(float32(1.01), float32(1.01)))
1001 for i := 0; i < mods; i++ {
1002 for j := 0; j < len(a); j++ {
1003 a[j] *= complex(real(a[j])*1.01, imag(a[j])*1.01)
1009 a := make([]complex64, length)
1010 for i := 0; i < length; i++ {
1011 a[i] = complex64(complex(float32(1.01), float32(1.01)))
1014 for i := 0; i < mods; i++ {
1015 for j := 0; j < len(a); j++ {
1016 a[j] *= complex(real(a[j])*1.01, imag(a[j])*1.01)
1022 a := make(map[complex64]complex64)
1023 for i := 0; i < length; i++ {
1024 a[complex64(complex(float32(i), float32(i)))] = complex64(complex(float32(i), float32(i))) + 0.01
1027 for i := 0; i < mods; i++ {
1028 for k, _ := range a {
1029 a[k] *= complex(real(a[k])*1.01, imag(a[k])*1.01)
1034 mapPointerKeyT: func() {
1035 a := make(map[*complex64]complex64)
1036 for i := 0; i < length; i++ {
1037 a[new(complex64)] = complex64(complex(float32(i), float32(i))) + 0.01
1040 for i := 0; i < mods; i++ {
1041 for k, _ := range a {
1042 a[k] *= complex(real(a[k])*1.01, imag(a[k])*1.01)
1048 a := make(chan complex64)
1049 for i := 0; i < mods; i++ {
1050 go func() { a <- complex64(complex(float32(i), float32(i))) }()
1055 interfaceT: func() {
1056 a := interface{}(complex64(complex(float32(1.01), float32(1.01))))
1057 for i := 0; i < mods; i++ {
1058 a = a.(complex64) * complex(real(a.(complex64))*1.01, imag(a.(complex64))*1.01)
1066 c := complex128(complex(float64(1.01), float64(1.01)))
1067 for i := 0; i < mods; i++ {
1068 c = complex(real(c)*1.01, imag(c)*1.01)
1073 a := func() *complex128 { return new(complex128) }()
1074 *a = complex128(complex(float64(1.01), float64(1.01)))
1075 for i := 0; i < mods; i++ {
1076 *a *= complex(real(*a)*1.01, imag(*a)*1.01)
1081 a := [length]complex128{}
1082 for i := 0; i < length; i++ {
1083 a[i] = complex128(complex(float64(1.01), float64(1.01)))
1086 for i := 0; i < mods; i++ {
1087 for j := 0; j < len(a); j++ {
1088 a[j] *= complex(real(a[j])*1.01, imag(a[j])*1.01)
1094 a := make([]complex128, length)
1095 for i := 0; i < length; i++ {
1096 a[i] = complex128(complex(float64(1.01), float64(1.01)))
1099 for i := 0; i < mods; i++ {
1100 for j := 0; j < len(a); j++ {
1101 a[j] *= complex(real(a[j])*1.01, imag(a[j])*1.01)
1107 a := make(map[complex128]complex128)
1108 for i := 0; i < length; i++ {
1109 a[complex128(complex(float64(i), float64(i)))] = complex128(complex(float64(i), float64(i))) + 0.01
1112 for i := 0; i < mods; i++ {
1113 for k, _ := range a {
1114 a[k] *= complex(real(a[k])*1.01, imag(a[k])*1.01)
1119 mapPointerKeyT: func() {
1120 a := make(map[*complex128]complex128)
1121 for i := 0; i < length; i++ {
1122 a[new(complex128)] = complex128(complex(float64(i), float64(i))) + 0.01
1125 for i := 0; i < mods; i++ {
1126 for k, _ := range a {
1127 a[k] *= complex(real(a[k])*1.01, imag(a[k])*1.01)
1133 a := make(chan complex128)
1134 for i := 0; i < mods; i++ {
1135 go func() { a <- complex128(complex(float64(i), float64(i))) }()
1140 interfaceT: func() {
1141 a := interface{}(complex128(complex(float64(1.01), float64(1.01))))
1142 for i := 0; i < mods; i++ {
1143 a = a.(complex128) * complex(real(a.(complex128))*1.01, imag(a.(complex128))*1.01)
1152 for i := 0; i < mods; i++ {
1158 a := func() *byte { return new(byte) }()
1159 for i := 0; i < mods; i++ {
1166 for i := 0; i < mods; i++ {
1167 for j := 0; j < len(a); j++ {
1174 a := make([]byte, length)
1175 for i := 0; i < mods; i++ {
1176 for j := 0; j < len(a); j++ {
1183 a := make(map[byte]byte)
1184 for i := 0; i < length; i++ {
1185 a[byte(i)] = byte(i)
1188 for i := 0; i < mods; i++ {
1189 for k, _ := range a {
1195 mapPointerKeyT: func() {
1196 a := make(map[*byte]byte)
1197 for i := 0; i < length; i++ {
1198 a[new(byte)] = byte(i)
1201 for i := 0; i < mods; i++ {
1202 for k, _ := range a {
1209 a := make(chan byte)
1210 for i := 0; i < mods; i++ {
1211 go func() { a <- byte(i) }()
1216 interfaceT: func() {
1217 a := interface{}(byte(0))
1218 for i := 0; i < mods; i++ {
1228 for i := 0; i < mods; i++ {
1234 a := func() *rune { return new(rune) }()
1235 for i := 0; i < mods; i++ {
1242 for i := 0; i < mods; i++ {
1243 for j := 0; j < len(a); j++ {
1250 a := make([]rune, length)
1251 for i := 0; i < mods; i++ {
1252 for j := 0; j < len(a); j++ {
1259 a := make(map[rune]rune)
1260 for i := 0; i < length; i++ {
1261 a[rune(i)] = rune(i)
1264 for i := 0; i < mods; i++ {
1265 for k, _ := range a {
1271 mapPointerKeyT: func() {
1272 a := make(map[*rune]rune)
1273 for i := 0; i < length; i++ {
1274 a[new(rune)] = rune(i)
1277 for i := 0; i < mods; i++ {
1278 for k, _ := range a {
1285 a := make(chan rune)
1286 for i := 0; i < mods; i++ {
1287 go func() { a <- rune(i) }()
1292 interfaceT: func() {
1293 a := interface{}(rune(0))
1294 for i := 0; i < mods; i++ {
1304 for i := 0; i < mods; i++ {
1310 a := func() *uint { return new(uint) }()
1311 for i := 0; i < mods; i++ {
1318 for i := 0; i < mods; i++ {
1319 for j := 0; j < len(a); j++ {
1326 a := make([]uint, length)
1327 for i := 0; i < mods; i++ {
1328 for j := 0; j < len(a); j++ {
1335 a := make(map[uint]uint)
1336 for i := 0; i < length; i++ {
1337 a[uint(i)] = uint(i)
1340 for i := 0; i < mods; i++ {
1341 for k, _ := range a {
1347 mapPointerKeyT: func() {
1348 a := make(map[*uint]uint)
1349 for i := 0; i < length; i++ {
1350 a[new(uint)] = uint(i)
1353 for i := 0; i < mods; i++ {
1354 for k, _ := range a {
1361 a := make(chan uint)
1362 for i := 0; i < mods; i++ {
1363 go func() { a <- uint(i) }()
1368 interfaceT: func() {
1369 a := interface{}(uint(0))
1370 for i := 0; i < mods; i++ {
1380 for i := 0; i < mods; i++ {
1386 a := func() *int { return new(int) }()
1387 for i := 0; i < mods; i++ {
1394 for i := 0; i < mods; i++ {
1395 for j := 0; j < len(a); j++ {
1402 a := make([]int, length)
1403 for i := 0; i < mods; i++ {
1404 for j := 0; j < len(a); j++ {
1411 a := make(map[int]int)
1412 for i := 0; i < length; i++ {
1416 for i := 0; i < mods; i++ {
1417 for k, _ := range a {
1423 mapPointerKeyT: func() {
1424 a := make(map[*int]int)
1425 for i := 0; i < length; i++ {
1426 a[new(int)] = int(i)
1429 for i := 0; i < mods; i++ {
1430 for k, _ := range a {
1438 for i := 0; i < mods; i++ {
1439 go func() { a <- int(i) }()
1444 interfaceT: func() {
1445 a := interface{}(int(0))
1446 for i := 0; i < mods; i++ {
1456 for i := 0; i < mods; i++ {
1462 a := func() *uintptr { return new(uintptr) }()
1463 for i := 0; i < mods; i++ {
1469 a := [length]uintptr{}
1470 for i := 0; i < mods; i++ {
1471 for j := 0; j < len(a); j++ {
1478 a := make([]uintptr, length)
1479 for i := 0; i < mods; i++ {
1480 for j := 0; j < len(a); j++ {
1487 a := make(map[uintptr]uintptr)
1488 for i := 0; i < length; i++ {
1489 a[uintptr(i)] = uintptr(i)
1492 for i := 0; i < mods; i++ {
1493 for k, _ := range a {
1499 mapPointerKeyT: func() {
1500 a := make(map[*uintptr]uintptr)
1501 for i := 0; i < length; i++ {
1502 a[new(uintptr)] = uintptr(i)
1505 for i := 0; i < mods; i++ {
1506 for k, _ := range a {
1513 a := make(chan uintptr)
1514 for i := 0; i < mods; i++ {
1515 go func() { a <- uintptr(i) }()
1520 interfaceT: func() {
1521 a := interface{}(uintptr(0))
1522 for i := 0; i < mods; i++ {
1532 f := func(a string) string { return a }
1533 for i := 0; i < mods; i++ {
1539 a := func() *string { return new(string) }()
1540 for i := 0; i < mods; i++ {
1546 a := [length]string{}
1547 for i := 0; i < mods; i++ {
1548 for j := 0; j < len(a); j++ {
1555 a := make([]string, length)
1556 for i := 0; i < mods; i++ {
1557 for j := 0; j < len(a); j++ {
1564 a := make(map[string]string)
1565 for i := 0; i < length; i++ {
1566 a[string(i)] = str(i)
1569 for i := 0; i < mods; i++ {
1570 for k, _ := range a {
1576 mapPointerKeyT: func() {
1577 a := make(map[*string]string)
1578 for i := 0; i < length; i++ {
1579 a[new(string)] = str(i)
1582 for i := 0; i < mods; i++ {
1583 for k, _ := range a {
1590 a := make(chan string)
1591 for i := 0; i < mods; i++ {
1592 go func() { a <- str(i) }()
1597 interfaceT: func() {
1598 a := interface{}(str(0))
1599 f := func(a string) string { return a }
1600 for i := 0; i < mods; i++ {
1611 for i := 0; i < mods; i++ {
1622 s.c64 = complex(real(s.c64)*1.01, imag(s.c64)*1.01)
1623 s.c128 = complex(real(s.c128)*1.01, imag(s.c128)*1.01)
1634 s := func() *structT {
1638 for i := 0; i < mods; i++ {
1649 s.c64 = complex(real(s.c64)*1.01, imag(s.c64)*1.01)
1650 s.c128 = complex(real(s.c128)*1.01, imag(s.c128)*1.01)
1661 a := [length]structT{}
1662 for i := 0; i < len(a); i++ {
1665 for i := 0; i < mods; i++ {
1666 for j := 0; j < len(a); j++ {
1677 a[j].c64 = complex(real(a[j].c64)*1.01, imag(a[j].c64)*1.01)
1678 a[j].c128 = complex(real(a[j].c128)*1.01, imag(a[j].c128)*1.01)
1690 a := make([]structT, length)
1691 for i := 0; i < len(a); i++ {
1694 for i := 0; i < mods; i++ {
1695 for j := 0; j < len(a); j++ {
1706 a[j].c64 = complex(real(a[j].c64)*1.01, imag(a[j].c64)*1.01)
1707 a[j].c128 = complex(real(a[j].c128)*1.01, imag(a[j].c128)*1.01)
1719 a := make(map[structT]structT)
1720 for i := 0; i < length; i++ {
1726 for i := 0; i < mods; i++ {
1727 for j, _ := range a {
1739 m.c64 = complex(real(a[j].c64)*1.01, imag(a[j].c64)*1.01)
1740 m.c128 = complex(real(a[j].c128)*1.01, imag(a[j].c128)*1.01)
1753 mapPointerKeyT: func() {
1754 a := make(map[*structT]structT)
1755 f := func() *structT {
1759 for i := 0; i < length; i++ {
1765 for i := 0; i < mods; i++ {
1766 for j, _ := range a {
1778 m.c64 = complex(real(a[j].c64)*1.01, imag(a[j].c64)*1.01)
1779 m.c128 = complex(real(a[j].c128)*1.01, imag(a[j].c128)*1.01)
1793 a := make(chan structT)
1794 for i := 0; i < mods; i++ {
1795 go func() { a <- newStructT() }()
1800 interfaceT: func() {
1801 a := interface{}(newStructT())
1802 for i := 0; i < mods; i++ {
1810 type structT struct {
1831 func newStructT() structT {
1835 c64: complex(float32(1.01), float32(1.01)),
1836 c128: complex(float64(1.01), float64(1.01)),
1840 func str(in int) string {