mirror of
https://github.com/golang/go
synced 2024-11-23 15:30:05 -07:00
cmd/compile: delete Func.Outer
This was just storage for a linked list. Change-Id: I850e8db1e1f5e72410f5c904be9409179b56a94a Reviewed-on: https://go-review.googlesource.com/23484 Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
cedc7c8f20
commit
93369001c7
@ -505,10 +505,8 @@ func ifacedcl(n *Node) {
|
||||
n.Func = new(Func)
|
||||
n.Func.FCurfn = Curfn
|
||||
dclcontext = PPARAM
|
||||
markdcl()
|
||||
Funcdepth++
|
||||
n.Func.Outer = Curfn
|
||||
Curfn = n
|
||||
|
||||
funcstart(n)
|
||||
funcargs(n.Right)
|
||||
|
||||
// funcbody is normally called after the parser has
|
||||
@ -535,11 +533,7 @@ func funchdr(n *Node) {
|
||||
}
|
||||
|
||||
dclcontext = PAUTO
|
||||
markdcl()
|
||||
Funcdepth++
|
||||
|
||||
n.Func.Outer = Curfn
|
||||
Curfn = n
|
||||
funcstart(n)
|
||||
|
||||
if n.Func.Nname != nil {
|
||||
funcargs(n.Func.Nname.Name.Param.Ntype)
|
||||
@ -672,6 +666,19 @@ func funcargs2(t *Type) {
|
||||
}
|
||||
}
|
||||
|
||||
var funcstack []*Node // stack of previous values of Curfn
|
||||
var Funcdepth int32 // len(funcstack) during parsing, but then forced to be the same later during compilation
|
||||
|
||||
|
||||
// start the function.
|
||||
// called before funcargs; undone at end of funcbody.
|
||||
func funcstart(n *Node) {
|
||||
markdcl()
|
||||
funcstack = append(funcstack, Curfn)
|
||||
Funcdepth++
|
||||
Curfn = n
|
||||
}
|
||||
|
||||
// finish the body.
|
||||
// called in auto-declaration context.
|
||||
// returns in extern-declaration context.
|
||||
@ -681,9 +688,8 @@ func funcbody(n *Node) {
|
||||
Fatalf("funcbody: unexpected dclcontext %d", dclcontext)
|
||||
}
|
||||
popdcl()
|
||||
funcstack, Curfn = funcstack[:len(funcstack)-1], funcstack[len(funcstack)-1]
|
||||
Funcdepth--
|
||||
Curfn = n.Func.Outer
|
||||
n.Func.Outer = nil
|
||||
if Funcdepth == 0 {
|
||||
dclcontext = PEXTERN
|
||||
}
|
||||
|
@ -259,8 +259,6 @@ var Widthreg int
|
||||
|
||||
var nblank *Node
|
||||
|
||||
var Funcdepth int32
|
||||
|
||||
var typecheckok bool
|
||||
|
||||
var compiling_runtime bool
|
||||
|
@ -23,7 +23,7 @@ func TestSizeof(t *testing.T) {
|
||||
_64bit uintptr // size on 64bit platforms
|
||||
}{
|
||||
{Flow{}, 52, 88},
|
||||
{Func{}, 96, 168},
|
||||
{Func{}, 92, 160},
|
||||
{Name{}, 52, 80},
|
||||
{Node{}, 92, 144},
|
||||
{Sym{}, 60, 112},
|
||||
|
@ -199,9 +199,8 @@ type Func struct {
|
||||
Dcl []*Node // autodcl for this func/closure
|
||||
Inldcl Nodes // copy of dcl for use in inlining
|
||||
Closgen int
|
||||
Outerfunc *Node
|
||||
Outerfunc *Node // outer function (for closure)
|
||||
FieldTrack map[*Sym]struct{}
|
||||
Outer *Node // outer func for closure
|
||||
Ntype *Node // signature
|
||||
Top int // top context (Ecall, Eproc, etc)
|
||||
Closure *Node // OCLOSURE <-> ODCLFUNC
|
||||
|
Loading…
Reference in New Issue
Block a user