/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue34723.go
70 строк
1 KB
Keith Randall
cmd/compile: improve write barrier removal
07 окт 2019, 20:19
07 окт 2019, 20:19
30da79d
Код
Авторство
О чём код?
// errorcheck -0 -d=wb // Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Make sure we don't introduce write barriers where we // don't need them. These cases are writing pointers to // globals to zeroed memory. package main func f1() []string { return []string{"a"} } func f2() []string { return []string{"a", "b"} } type T struct { a [6]*int } func f3() *T { t := new(T) t.a[0] = &g t.a[1] = &g t.a[2] = &g t.a[3] = &g t.a[4] = &g t.a[5] = &g return t } func f4() *T { t := new(T) t.a[5] = &g t.a[4] = &g t.a[3] = &g t.a[2] = &g t.a[1] = &g t.a[0] = &g return t } func f5() *T { t := new(T) t.a[4] = &g t.a[2] = &g t.a[0] = &g t.a[3] = &g t.a[1] = &g t.a[5] = &g return t } type U struct { a [65]*int } func f6() *U { u := new(U) u.a[63] = &g // This offset is too large: we only track the first 64 pointers for zeroness. u.a[64] = &g // ERROR "write barrier" return u } var g int