mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
Revert "cmd/compile: allow more inlining of functions that construct closures"
This reverts commit http://go.dev/cl//479095 Reason for revert: causes failures in google-internal testing Change-Id: If1018b35be0b8627e2959f116179ada24d44d67c Reviewed-on: https://go-review.googlesource.com/c/go/+/481637 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Michael Pratt <mpratt@google.com> Run-TryBot: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
8edcdddb23
commit
f5371581c7
2 changed files with 17 additions and 20 deletions
|
|
@ -446,8 +446,6 @@ func (v *hairyVisitor) tooHairy(fn *ir.Func) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
// doNode visits n and its children, updates the state in v, and returns true if
|
||||
// n makes the current function too hairy for inlining.
|
||||
func (v *hairyVisitor) doNode(n ir.Node) bool {
|
||||
if n == nil {
|
||||
return false
|
||||
|
|
@ -579,10 +577,13 @@ func (v *hairyVisitor) doNode(n ir.Node) bool {
|
|||
// TODO(danscales): Maybe make budget proportional to number of closure
|
||||
// variables, e.g.:
|
||||
//v.budget -= int32(len(n.(*ir.ClosureExpr).Func.ClosureVars) * 3)
|
||||
// TODO(austin): However, if we're able to inline this closure into
|
||||
// v.curFunc, then we actually pay nothing for the closure captures. We
|
||||
// should try to account for that if we're going to account for captures.
|
||||
v.budget -= 15
|
||||
// Scan body of closure (which DoChildren doesn't automatically
|
||||
// do) to check for disallowed ops in the body and include the
|
||||
// body in the budget.
|
||||
if doList(n.(*ir.ClosureExpr).Func.Body, v.do) {
|
||||
return true
|
||||
}
|
||||
|
||||
case ir.OGO,
|
||||
ir.ODEFER,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue