mirror of
https://github.com/golang/go
synced 2024-09-05 07:54:46 +00:00
![Austin Clements](/assets/img/avatar_default.png)
Now that the buffered write barrier is implemented for all architectures, we can remove the old eager write barrier implementation. This CL removes the implementation from the runtime, support in the compiler for calling it, and updates some compiler tests that relied on the old eager barrier support. It also makes sure that all of the useful comments from the old write barrier implementation still have a place to live. Fixes #22460. Updates #21640 since this fixes the layering concerns of the write barrier (but not the other things in that issue). Change-Id: I580f93c152e89607e0a72fe43370237ba97bae74 Reviewed-on: https://go-review.googlesource.com/92705 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Rick Hudson <rlh@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
25 lines
679 B
Go
25 lines
679 B
Go
// errorcheck -0 -live -l -d=compilelater
|
|
|
|
// Copyright 2017 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.
|
|
|
|
// Issue 20250: liveness differed with concurrent compilation
|
|
// due to propagation of addrtaken to outer variables for
|
|
// closure variables.
|
|
|
|
package p
|
|
|
|
type T struct {
|
|
s string
|
|
}
|
|
|
|
func f(a T) { // ERROR "live at entry to f: a"
|
|
var e interface{}
|
|
func() { // ERROR "live at entry to f.func1: a &e"
|
|
e = a.s // ERROR "live at call to convT2Estring: a &e"
|
|
}() // ERROR "live at call to f.func1: e$"
|
|
// Before the fix, both a and e were live at the previous line.
|
|
_ = e
|
|
}
|