mirror of
https://github.com/golang/go
synced 2024-11-11 22:20:22 -07:00
[dev.typeparams] cmd/compile/internal/typecheck: declutter generated builtin.go (cleanup)
Even though builtin.go is generated, there's no need for it to be so huge in terms code size. Nor does ultimate speed matter here. Added two simple helper functions that are not inlined, which reduce the amount of code generated for this file from 77881 bytes to 27641 bytes of assembly (per compiler -S output) and reduce the compile binary by ~140KiB (of course that's insignificant given the 22MiB file size). Change-Id: I3058ec62788b33eaeff2f9d5fe975b8e41cbf172 Reviewed-on: https://go-review.googlesource.com/c/go/+/287772 Trust: Robert Griesemer <gri@golang.org> Trust: Dan Scales <danscales@google.com> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Dan Scales <danscales@google.com>
This commit is contained in:
parent
2440dd457a
commit
507e641963
@ -205,139 +205,153 @@ var runtimeDecls = [...]struct {
|
||||
{"arm64HasATOMICS", varTag, 6},
|
||||
}
|
||||
|
||||
// Not inlining this function removes a significant chunk of init code.
|
||||
//go:noinline
|
||||
func newSig(params, results []*types.Field) *types.Type {
|
||||
return types.NewSignature(types.NoPkg, nil, nil, params, results)
|
||||
}
|
||||
|
||||
func params(tlist ...*types.Type) []*types.Field {
|
||||
flist := make([]*types.Field, len(tlist))
|
||||
for i, typ := range tlist {
|
||||
flist[i] = types.NewField(src.NoXPos, nil, typ)
|
||||
}
|
||||
return flist
|
||||
}
|
||||
|
||||
func runtimeTypes() []*types.Type {
|
||||
var typs [132]*types.Type
|
||||
typs[0] = types.ByteType
|
||||
typs[1] = types.NewPtr(typs[0])
|
||||
typs[2] = types.Types[types.TANY]
|
||||
typs[3] = types.NewPtr(typs[2])
|
||||
typs[4] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[3])})
|
||||
typs[4] = newSig(params(typs[1]), params(typs[3]))
|
||||
typs[5] = types.Types[types.TUINTPTR]
|
||||
typs[6] = types.Types[types.TBOOL]
|
||||
typs[7] = types.Types[types.TUNSAFEPTR]
|
||||
typs[8] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[5]), types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[6])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[7])})
|
||||
typs[9] = types.NewSignature(types.NoPkg, nil, nil, nil, nil)
|
||||
typs[8] = newSig(params(typs[5], typs[1], typs[6]), params(typs[7]))
|
||||
typs[9] = newSig(nil, nil)
|
||||
typs[10] = types.Types[types.TINTER]
|
||||
typs[11] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[10])}, nil)
|
||||
typs[11] = newSig(params(typs[10]), nil)
|
||||
typs[12] = types.Types[types.TINT32]
|
||||
typs[13] = types.NewPtr(typs[12])
|
||||
typs[14] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[13])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[10])})
|
||||
typs[14] = newSig(params(typs[13]), params(typs[10]))
|
||||
typs[15] = types.Types[types.TINT]
|
||||
typs[16] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[15])}, nil)
|
||||
typs[16] = newSig(params(typs[15], typs[15]), nil)
|
||||
typs[17] = types.Types[types.TUINT]
|
||||
typs[18] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[17]), types.NewField(src.NoXPos, nil, typs[15])}, nil)
|
||||
typs[19] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])}, nil)
|
||||
typs[18] = newSig(params(typs[17], typs[15]), nil)
|
||||
typs[19] = newSig(params(typs[6]), nil)
|
||||
typs[20] = types.Types[types.TFLOAT64]
|
||||
typs[21] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[20])}, nil)
|
||||
typs[21] = newSig(params(typs[20]), nil)
|
||||
typs[22] = types.Types[types.TINT64]
|
||||
typs[23] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[22])}, nil)
|
||||
typs[23] = newSig(params(typs[22]), nil)
|
||||
typs[24] = types.Types[types.TUINT64]
|
||||
typs[25] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[24])}, nil)
|
||||
typs[25] = newSig(params(typs[24]), nil)
|
||||
typs[26] = types.Types[types.TCOMPLEX128]
|
||||
typs[27] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[26])}, nil)
|
||||
typs[27] = newSig(params(typs[26]), nil)
|
||||
typs[28] = types.Types[types.TSTRING]
|
||||
typs[29] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])}, nil)
|
||||
typs[30] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[2])}, nil)
|
||||
typs[31] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[5])}, nil)
|
||||
typs[29] = newSig(params(typs[28]), nil)
|
||||
typs[30] = newSig(params(typs[2]), nil)
|
||||
typs[31] = newSig(params(typs[5]), nil)
|
||||
typs[32] = types.NewArray(typs[0], 32)
|
||||
typs[33] = types.NewPtr(typs[32])
|
||||
typs[34] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[33]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[35] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[33]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[36] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[33]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[37] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[33]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[34] = newSig(params(typs[33], typs[28], typs[28]), params(typs[28]))
|
||||
typs[35] = newSig(params(typs[33], typs[28], typs[28], typs[28]), params(typs[28]))
|
||||
typs[36] = newSig(params(typs[33], typs[28], typs[28], typs[28], typs[28]), params(typs[28]))
|
||||
typs[37] = newSig(params(typs[33], typs[28], typs[28], typs[28], typs[28], typs[28]), params(typs[28]))
|
||||
typs[38] = types.NewSlice(typs[28])
|
||||
typs[39] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[33]), types.NewField(src.NoXPos, nil, typs[38])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[40] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[28])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[15])})
|
||||
typs[39] = newSig(params(typs[33], typs[38]), params(typs[28]))
|
||||
typs[40] = newSig(params(typs[28], typs[28]), params(typs[15]))
|
||||
typs[41] = types.NewArray(typs[0], 4)
|
||||
typs[42] = types.NewPtr(typs[41])
|
||||
typs[43] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[42]), types.NewField(src.NoXPos, nil, typs[22])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[44] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[33]), types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[15])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[45] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[15])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[43] = newSig(params(typs[42], typs[22]), params(typs[28]))
|
||||
typs[44] = newSig(params(typs[33], typs[1], typs[15]), params(typs[28]))
|
||||
typs[45] = newSig(params(typs[1], typs[15]), params(typs[28]))
|
||||
typs[46] = types.RuneType
|
||||
typs[47] = types.NewSlice(typs[46])
|
||||
typs[48] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[33]), types.NewField(src.NoXPos, nil, typs[47])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])})
|
||||
typs[48] = newSig(params(typs[33], typs[47]), params(typs[28]))
|
||||
typs[49] = types.NewSlice(typs[0])
|
||||
typs[50] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[33]), types.NewField(src.NoXPos, nil, typs[28])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[49])})
|
||||
typs[50] = newSig(params(typs[33], typs[28]), params(typs[49]))
|
||||
typs[51] = types.NewArray(typs[46], 32)
|
||||
typs[52] = types.NewPtr(typs[51])
|
||||
typs[53] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[52]), types.NewField(src.NoXPos, nil, typs[28])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[47])})
|
||||
typs[54] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[5])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[15])})
|
||||
typs[55] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[28]), types.NewField(src.NoXPos, nil, typs[15])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[46]), types.NewField(src.NoXPos, nil, typs[15])})
|
||||
typs[56] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[28])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[15])})
|
||||
typs[57] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[2])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[2])})
|
||||
typs[58] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[2])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[7])})
|
||||
typs[59] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[3])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[2])})
|
||||
typs[60] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[2])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[2]), types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[61] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[1])}, nil)
|
||||
typs[62] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1])}, nil)
|
||||
typs[53] = newSig(params(typs[52], typs[28]), params(typs[47]))
|
||||
typs[54] = newSig(params(typs[3], typs[15], typs[3], typs[15], typs[5]), params(typs[15]))
|
||||
typs[55] = newSig(params(typs[28], typs[15]), params(typs[46], typs[15]))
|
||||
typs[56] = newSig(params(typs[28]), params(typs[15]))
|
||||
typs[57] = newSig(params(typs[1], typs[2]), params(typs[2]))
|
||||
typs[58] = newSig(params(typs[2]), params(typs[7]))
|
||||
typs[59] = newSig(params(typs[1], typs[3]), params(typs[2]))
|
||||
typs[60] = newSig(params(typs[1], typs[2]), params(typs[2], typs[6]))
|
||||
typs[61] = newSig(params(typs[1], typs[1], typs[1]), nil)
|
||||
typs[62] = newSig(params(typs[1]), nil)
|
||||
typs[63] = types.NewPtr(typs[5])
|
||||
typs[64] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[63]), types.NewField(src.NoXPos, nil, typs[7]), types.NewField(src.NoXPos, nil, typs[7])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[64] = newSig(params(typs[63], typs[7], typs[7]), params(typs[6]))
|
||||
typs[65] = types.Types[types.TUINT32]
|
||||
typs[66] = types.NewSignature(types.NoPkg, nil, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[65])})
|
||||
typs[66] = newSig(nil, params(typs[65]))
|
||||
typs[67] = types.NewMap(typs[2], typs[2])
|
||||
typs[68] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[22]), types.NewField(src.NoXPos, nil, typs[3])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[67])})
|
||||
typs[69] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[3])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[67])})
|
||||
typs[70] = types.NewSignature(types.NoPkg, nil, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[67])})
|
||||
typs[71] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67]), types.NewField(src.NoXPos, nil, typs[3])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[3])})
|
||||
typs[72] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67]), types.NewField(src.NoXPos, nil, typs[2])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[3])})
|
||||
typs[73] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67]), types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[1])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[3])})
|
||||
typs[74] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67]), types.NewField(src.NoXPos, nil, typs[3])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[75] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67]), types.NewField(src.NoXPos, nil, typs[2])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[76] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67]), types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[1])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[77] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67]), types.NewField(src.NoXPos, nil, typs[3])}, nil)
|
||||
typs[78] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67]), types.NewField(src.NoXPos, nil, typs[2])}, nil)
|
||||
typs[79] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[3])}, nil)
|
||||
typs[80] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[67])}, nil)
|
||||
typs[68] = newSig(params(typs[1], typs[22], typs[3]), params(typs[67]))
|
||||
typs[69] = newSig(params(typs[1], typs[15], typs[3]), params(typs[67]))
|
||||
typs[70] = newSig(nil, params(typs[67]))
|
||||
typs[71] = newSig(params(typs[1], typs[67], typs[3]), params(typs[3]))
|
||||
typs[72] = newSig(params(typs[1], typs[67], typs[2]), params(typs[3]))
|
||||
typs[73] = newSig(params(typs[1], typs[67], typs[3], typs[1]), params(typs[3]))
|
||||
typs[74] = newSig(params(typs[1], typs[67], typs[3]), params(typs[3], typs[6]))
|
||||
typs[75] = newSig(params(typs[1], typs[67], typs[2]), params(typs[3], typs[6]))
|
||||
typs[76] = newSig(params(typs[1], typs[67], typs[3], typs[1]), params(typs[3], typs[6]))
|
||||
typs[77] = newSig(params(typs[1], typs[67], typs[3]), nil)
|
||||
typs[78] = newSig(params(typs[1], typs[67], typs[2]), nil)
|
||||
typs[79] = newSig(params(typs[3]), nil)
|
||||
typs[80] = newSig(params(typs[1], typs[67]), nil)
|
||||
typs[81] = types.NewChan(typs[2], types.Cboth)
|
||||
typs[82] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[22])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[81])})
|
||||
typs[83] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[15])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[81])})
|
||||
typs[82] = newSig(params(typs[1], typs[22]), params(typs[81]))
|
||||
typs[83] = newSig(params(typs[1], typs[15]), params(typs[81]))
|
||||
typs[84] = types.NewChan(typs[2], types.Crecv)
|
||||
typs[85] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[84]), types.NewField(src.NoXPos, nil, typs[3])}, nil)
|
||||
typs[86] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[84]), types.NewField(src.NoXPos, nil, typs[3])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[85] = newSig(params(typs[84], typs[3]), nil)
|
||||
typs[86] = newSig(params(typs[84], typs[3]), params(typs[6]))
|
||||
typs[87] = types.NewChan(typs[2], types.Csend)
|
||||
typs[88] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[87]), types.NewField(src.NoXPos, nil, typs[3])}, nil)
|
||||
typs[88] = newSig(params(typs[87], typs[3]), nil)
|
||||
typs[89] = types.NewArray(typs[0], 3)
|
||||
typs[90] = types.NewStruct(types.NoPkg, []*types.Field{types.NewField(src.NoXPos, Lookup("enabled"), typs[6]), types.NewField(src.NoXPos, Lookup("pad"), typs[89]), types.NewField(src.NoXPos, Lookup("needed"), typs[6]), types.NewField(src.NoXPos, Lookup("cgo"), typs[6]), types.NewField(src.NoXPos, Lookup("alignme"), typs[24])})
|
||||
typs[91] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[3])}, nil)
|
||||
typs[92] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[3])}, nil)
|
||||
typs[93] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[15])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[15])})
|
||||
typs[94] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[87]), types.NewField(src.NoXPos, nil, typs[3])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[95] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[84])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[91] = newSig(params(typs[1], typs[3], typs[3]), nil)
|
||||
typs[92] = newSig(params(typs[1], typs[3]), nil)
|
||||
typs[93] = newSig(params(typs[1], typs[3], typs[15], typs[3], typs[15]), params(typs[15]))
|
||||
typs[94] = newSig(params(typs[87], typs[3]), params(typs[6]))
|
||||
typs[95] = newSig(params(typs[3], typs[84]), params(typs[6]))
|
||||
typs[96] = types.NewPtr(typs[6])
|
||||
typs[97] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[96]), types.NewField(src.NoXPos, nil, typs[84])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[98] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[63])}, nil)
|
||||
typs[99] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[63]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[6])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[100] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[15])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[7])})
|
||||
typs[101] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[22]), types.NewField(src.NoXPos, nil, typs[22])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[7])})
|
||||
typs[102] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[15]), types.NewField(src.NoXPos, nil, typs[7])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[7])})
|
||||
typs[97] = newSig(params(typs[3], typs[96], typs[84]), params(typs[6]))
|
||||
typs[98] = newSig(params(typs[63]), nil)
|
||||
typs[99] = newSig(params(typs[1], typs[1], typs[63], typs[15], typs[15], typs[6]), params(typs[15], typs[6]))
|
||||
typs[100] = newSig(params(typs[1], typs[15], typs[15]), params(typs[7]))
|
||||
typs[101] = newSig(params(typs[1], typs[22], typs[22]), params(typs[7]))
|
||||
typs[102] = newSig(params(typs[1], typs[15], typs[15], typs[7]), params(typs[7]))
|
||||
typs[103] = types.NewSlice(typs[2])
|
||||
typs[104] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[103]), types.NewField(src.NoXPos, nil, typs[15])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[103])})
|
||||
typs[105] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[5])}, nil)
|
||||
typs[106] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[7]), types.NewField(src.NoXPos, nil, typs[5])}, nil)
|
||||
typs[107] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[5])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[108] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[3]), types.NewField(src.NoXPos, nil, typs[3])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[109] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[7]), types.NewField(src.NoXPos, nil, typs[7])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[6])})
|
||||
typs[110] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[7]), types.NewField(src.NoXPos, nil, typs[5]), types.NewField(src.NoXPos, nil, typs[5])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[5])})
|
||||
typs[111] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[7]), types.NewField(src.NoXPos, nil, typs[5])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[5])})
|
||||
typs[112] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[22]), types.NewField(src.NoXPos, nil, typs[22])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[22])})
|
||||
typs[113] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[24]), types.NewField(src.NoXPos, nil, typs[24])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[24])})
|
||||
typs[114] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[20])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[22])})
|
||||
typs[115] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[20])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[24])})
|
||||
typs[116] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[20])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[65])})
|
||||
typs[117] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[22])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[20])})
|
||||
typs[118] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[24])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[20])})
|
||||
typs[119] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[65])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[20])})
|
||||
typs[120] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[26]), types.NewField(src.NoXPos, nil, typs[26])}, []*types.Field{types.NewField(src.NoXPos, nil, typs[26])})
|
||||
typs[121] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[5]), types.NewField(src.NoXPos, nil, typs[5])}, nil)
|
||||
typs[122] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[5]), types.NewField(src.NoXPos, nil, typs[5]), types.NewField(src.NoXPos, nil, typs[5])}, nil)
|
||||
typs[123] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[7]), types.NewField(src.NoXPos, nil, typs[1]), types.NewField(src.NoXPos, nil, typs[5])}, nil)
|
||||
typs[104] = newSig(params(typs[1], typs[103], typs[15]), params(typs[103]))
|
||||
typs[105] = newSig(params(typs[3], typs[3], typs[5]), nil)
|
||||
typs[106] = newSig(params(typs[7], typs[5]), nil)
|
||||
typs[107] = newSig(params(typs[3], typs[3], typs[5]), params(typs[6]))
|
||||
typs[108] = newSig(params(typs[3], typs[3]), params(typs[6]))
|
||||
typs[109] = newSig(params(typs[7], typs[7]), params(typs[6]))
|
||||
typs[110] = newSig(params(typs[7], typs[5], typs[5]), params(typs[5]))
|
||||
typs[111] = newSig(params(typs[7], typs[5]), params(typs[5]))
|
||||
typs[112] = newSig(params(typs[22], typs[22]), params(typs[22]))
|
||||
typs[113] = newSig(params(typs[24], typs[24]), params(typs[24]))
|
||||
typs[114] = newSig(params(typs[20]), params(typs[22]))
|
||||
typs[115] = newSig(params(typs[20]), params(typs[24]))
|
||||
typs[116] = newSig(params(typs[20]), params(typs[65]))
|
||||
typs[117] = newSig(params(typs[22]), params(typs[20]))
|
||||
typs[118] = newSig(params(typs[24]), params(typs[20]))
|
||||
typs[119] = newSig(params(typs[65]), params(typs[20]))
|
||||
typs[120] = newSig(params(typs[26], typs[26]), params(typs[26]))
|
||||
typs[121] = newSig(params(typs[5], typs[5]), nil)
|
||||
typs[122] = newSig(params(typs[5], typs[5], typs[5]), nil)
|
||||
typs[123] = newSig(params(typs[7], typs[1], typs[5]), nil)
|
||||
typs[124] = types.NewSlice(typs[7])
|
||||
typs[125] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[7]), types.NewField(src.NoXPos, nil, typs[124])}, nil)
|
||||
typs[125] = newSig(params(typs[7], typs[124]), nil)
|
||||
typs[126] = types.Types[types.TUINT8]
|
||||
typs[127] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[126]), types.NewField(src.NoXPos, nil, typs[126])}, nil)
|
||||
typs[127] = newSig(params(typs[126], typs[126]), nil)
|
||||
typs[128] = types.Types[types.TUINT16]
|
||||
typs[129] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[128]), types.NewField(src.NoXPos, nil, typs[128])}, nil)
|
||||
typs[130] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[65]), types.NewField(src.NoXPos, nil, typs[65])}, nil)
|
||||
typs[131] = types.NewSignature(types.NoPkg, nil, nil, []*types.Field{types.NewField(src.NoXPos, nil, typs[24]), types.NewField(src.NoXPos, nil, typs[24])}, nil)
|
||||
typs[129] = newSig(params(typs[128], typs[128]), nil)
|
||||
typs[130] = newSig(params(typs[65], typs[65]), nil)
|
||||
typs[131] = newSig(params(typs[24], typs[24]), nil)
|
||||
return typs[:]
|
||||
}
|
||||
|
@ -102,6 +102,21 @@ func mkbuiltin(w io.Writer, name string) {
|
||||
}
|
||||
fmt.Fprintln(w, "}")
|
||||
|
||||
fmt.Fprintln(w, `
|
||||
// Not inlining this function removes a significant chunk of init code.
|
||||
//go:noinline
|
||||
func newSig(params, results []*types.Field) *types.Type {
|
||||
return types.NewSignature(types.NoPkg, nil, nil, params, results)
|
||||
}
|
||||
|
||||
func params(tlist ...*types.Type) []*types.Field {
|
||||
flist := make([]*types.Field, len(tlist))
|
||||
for i, typ := range tlist {
|
||||
flist[i] = types.NewField(src.NoXPos, nil, typ)
|
||||
}
|
||||
return flist
|
||||
}`)
|
||||
|
||||
fmt.Fprintln(w)
|
||||
fmt.Fprintf(w, "func %sTypes() []*types.Type {\n", name)
|
||||
fmt.Fprintf(w, "var typs [%d]*types.Type\n", len(interner.typs))
|
||||
@ -169,7 +184,7 @@ func (i *typeInterner) mktype(t ast.Expr) string {
|
||||
}
|
||||
return fmt.Sprintf("types.NewChan(%s, %s)", i.subtype(t.Value), dir)
|
||||
case *ast.FuncType:
|
||||
return fmt.Sprintf("types.NewSignature(types.NoPkg, nil, nil, %s, %s)", i.fields(t.Params, false), i.fields(t.Results, false))
|
||||
return fmt.Sprintf("newSig(%s, %s)", i.fields(t.Params, false), i.fields(t.Results, false))
|
||||
case *ast.InterfaceType:
|
||||
if len(t.Methods.List) != 0 {
|
||||
log.Fatal("non-empty interfaces unsupported")
|
||||
@ -192,22 +207,27 @@ func (i *typeInterner) fields(fl *ast.FieldList, keepNames bool) string {
|
||||
if fl == nil || len(fl.List) == 0 {
|
||||
return "nil"
|
||||
}
|
||||
|
||||
var res []string
|
||||
for _, f := range fl.List {
|
||||
typ := i.subtype(f.Type)
|
||||
if len(f.Names) == 0 {
|
||||
res = append(res, fmt.Sprintf("types.NewField(src.NoXPos, nil, %s)", typ))
|
||||
res = append(res, typ)
|
||||
} else {
|
||||
for _, name := range f.Names {
|
||||
if keepNames {
|
||||
res = append(res, fmt.Sprintf("types.NewField(src.NoXPos, Lookup(%q), %s)", name.Name, typ))
|
||||
} else {
|
||||
res = append(res, fmt.Sprintf("types.NewField(src.NoXPos, nil, %s)", typ))
|
||||
res = append(res, typ)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fmt.Sprintf("[]*types.Field{%s}", strings.Join(res, ", "))
|
||||
|
||||
if keepNames {
|
||||
return fmt.Sprintf("[]*types.Field{%s}", strings.Join(res, ", "))
|
||||
}
|
||||
return fmt.Sprintf("params(%s)", strings.Join(res, ", "))
|
||||
}
|
||||
|
||||
func intconst(e ast.Expr) int64 {
|
||||
|
Loading…
Reference in New Issue
Block a user