mirror of
https://github.com/golang/go
synced 2024-11-24 16:50:13 -07:00
9a555fc24c
ComputeAddrtaken needs to descend into closures, now that imported bodies can include closures. The bug was that we weren't properly setting Addrtaken for a variable inside a closure inside a function that we were importing. For now, still disable inlining of functions with closures for -G mode. I'll enable it in a later change -- there are just a few fixes related to the fact that we don't need to set Ntype for closure functions. Added a test derived from the cilium repro in the issue. Fixes #44370 Change-Id: Ida2a403636bf8740b471b3ad68b5474951811e19 Reviewed-on: https://go-review.googlesource.com/c/go/+/296649 Run-TryBot: Dan Scales <danscales@google.com> Trust: Dan Scales <danscales@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
21 lines
682 B
Go
21 lines
682 B
Go
// Copyright 2021 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.
|
|
|
|
package a
|
|
|
|
// A StoppableWaitGroup waits for a collection of goroutines to finish.
|
|
type StoppableWaitGroup struct {
|
|
// i is the internal counter which can store tolerate negative values
|
|
// as opposed the golang's library WaitGroup.
|
|
i *int64
|
|
}
|
|
|
|
// NewStoppableWaitGroup returns a new StoppableWaitGroup. When the 'Stop' is
|
|
// executed, following 'Add()' calls won't have any effect.
|
|
func NewStoppableWaitGroup() *StoppableWaitGroup {
|
|
return &StoppableWaitGroup{
|
|
i: func() *int64 { i := int64(0); return &i }(),
|
|
}
|
|
}
|