]> Cypherpunks.ru repositories - gostls13.git/commit
[dev.regabi] cmd/compile: split escape analysis state
authorMatthew Dempsky <mdempsky@google.com>
Fri, 1 Jan 2021 11:57:21 +0000 (03:57 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Fri, 1 Jan 2021 13:44:35 +0000 (13:44 +0000)
commit67ad695416fbcdf9d61e5bfc0f9cd9aac313caa4
treee280c6b5c34c7b5d466f8bb16ac7eff48d86853f
parentfad9a8b52864da738037163565e8eacc958baaa8
[dev.regabi] cmd/compile: split escape analysis state

In a future CL, I plan to change escape analysis to walk function
literal bodies at the point they appear within the AST, rather than
separately as their own standalone function declaration. This means
escape analysis's AST-walking code will become reentrant.

To make this easier to get right, this CL splits escape analysis's
state into two separate types: one that holds all of the state shared
across the entire batch, and another that holds only the state that's
used within initFunc and walkFunc.

Incidentally, this CL reveals that a bunch of logopt code was using
e.curfn outside of the AST-walking code paths where it's actually set,
so it was always nil. That code is in need of refactoring anyway, so
I'll come back and figure out the correct values to pass later when I
address that.

Passes toolstash -cmp.

Change-Id: I1d13f47d06f7583401afa1b53fcc5ee2adaea6c8
Reviewed-on: https://go-review.googlesource.com/c/go/+/280997
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
src/cmd/compile/internal/escape/escape.go