mirror of
https://github.com/golang/go
synced 2024-11-20 02:14:46 -07:00
cmd/yacc: generate arrays instead of slices where possible
Yacc generates a bunch of global variables of the form var yyFoo = []int{...} where yyFoo is never subsequently modified to point to a different slice. Since these variables are implicitly compiled as var yyFoo = ([...]int{...})[:] anyway, by simply converting them all to var yyFoo = [...]int{...} we save sizeof(sliceStruct) bytes of data memory for each variable and also make len(yyFoo) into compile-time constant expressions, which shaves some bytes off text size: $ size 6g.before 6g.after text data bss dec hex filename 4598019 605968 342700 5546687 54a2bf 6g.before 4597810 605552 342700 5546062 54a04e 6g.after Change-Id: I53c7aa6efdb2d52738013e9d337a59afbfcb2494 Reviewed-on: https://go-review.googlesource.com/7520 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dave Cheney <dave@cheney.net> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
01d005c616
commit
a1bb3030c8
@ -2240,7 +2240,6 @@ hidden_interfacedcl_list:
|
|||||||
}
|
}
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
func fixlbrace(lbr int) {
|
func fixlbrace(lbr int) {
|
||||||
// If the opening brace was an LBODY,
|
// If the opening brace was an LBODY,
|
||||||
// set up for another one now that we're done.
|
// set up for another one now that we're done.
|
||||||
@ -2249,4 +2248,3 @@ func fixlbrace(lbr int) {
|
|||||||
loophack = 1
|
loophack = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ const NotPackage = 57392
|
|||||||
const NotParen = 57393
|
const NotParen = 57393
|
||||||
const PreferToRightParen = 57394
|
const PreferToRightParen = 57394
|
||||||
|
|
||||||
var yyToknames = []string{
|
var yyToknames = [...]string{
|
||||||
"LLITERAL",
|
"LLITERAL",
|
||||||
"LASOP",
|
"LASOP",
|
||||||
"LCOLAS",
|
"LCOLAS",
|
||||||
@ -130,7 +130,7 @@ var yyToknames = []string{
|
|||||||
"')'",
|
"')'",
|
||||||
"PreferToRightParen",
|
"PreferToRightParen",
|
||||||
}
|
}
|
||||||
var yyStatenames = []string{}
|
var yyStatenames = [...]string{}
|
||||||
|
|
||||||
const yyEofCode = 1
|
const yyEofCode = 1
|
||||||
const yyErrCode = 2
|
const yyErrCode = 2
|
||||||
@ -147,7 +147,7 @@ func fixlbrace(lbr int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//line yacctab:1
|
//line yacctab:1
|
||||||
var yyExca = []int{
|
var yyExca = [...]int{
|
||||||
-1, 1,
|
-1, 1,
|
||||||
1, -1,
|
1, -1,
|
||||||
-2, 0,
|
-2, 0,
|
||||||
@ -272,7 +272,7 @@ var yyStates []string
|
|||||||
|
|
||||||
const yyLast = 2282
|
const yyLast = 2282
|
||||||
|
|
||||||
var yyAct = []int{
|
var yyAct = [...]int{
|
||||||
|
|
||||||
74, 381, 304, 285, 291, 486, 610, 398, 545, 478,
|
74, 381, 304, 285, 291, 486, 610, 398, 545, 478,
|
||||||
549, 296, 186, 75, 400, 229, 302, 401, 103, 389,
|
549, 296, 186, 75, 400, 229, 302, 401, 103, 389,
|
||||||
@ -504,7 +504,7 @@ var yyAct = []int{
|
|||||||
137, 136, 0, 151, 141, 142, 143, 144, 145, 146,
|
137, 136, 0, 151, 141, 142, 143, 144, 145, 146,
|
||||||
147, 148,
|
147, 148,
|
||||||
}
|
}
|
||||||
var yyPact = []int{
|
var yyPact = [...]int{
|
||||||
|
|
||||||
-1000, -1000, 542, 536, -1000, 164, -1000, 550, 555, 318,
|
-1000, -1000, 542, 536, -1000, 164, -1000, 550, 555, 318,
|
||||||
-1000, -1000, -1000, 588, -1000, -1000, 549, 1340, 316, 155,
|
-1000, -1000, -1000, 588, -1000, -1000, 549, 1340, 316, 155,
|
||||||
@ -574,7 +574,7 @@ var yyPact = []int{
|
|||||||
110, -1000, 37, 2017, -1000, -1000, 2017, -1000, -1000, -1000,
|
110, -1000, 37, 2017, -1000, -1000, 2017, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, 1689, 518, -1000,
|
-1000, -1000, -1000, -1000, -1000, 1689, 518, -1000,
|
||||||
}
|
}
|
||||||
var yyPgo = []int{
|
var yyPgo = [...]int{
|
||||||
|
|
||||||
0, 57, 771, 774, 45, 150, 26, 540, 29, 770,
|
0, 57, 771, 774, 45, 150, 26, 540, 29, 770,
|
||||||
768, 2, 28, 61, 322, 766, 17, 4, 765, 761,
|
768, 2, 28, 61, 322, 766, 17, 4, 765, 761,
|
||||||
@ -592,7 +592,7 @@ var yyPgo = []int{
|
|||||||
648, 647, 642, 639, 637, 634, 631, 627, 38, 623,
|
648, 647, 642, 639, 637, 634, 631, 627, 38, 623,
|
||||||
596, 593,
|
596, 593,
|
||||||
}
|
}
|
||||||
var yyR1 = []int{
|
var yyR1 = [...]int{
|
||||||
|
|
||||||
0, 112, 114, 114, 116, 113, 115, 115, 119, 119,
|
0, 112, 114, 114, 116, 113, 115, 115, 119, 119,
|
||||||
119, 120, 120, 121, 121, 2, 2, 2, 117, 123,
|
119, 120, 120, 121, 121, 2, 2, 2, 117, 123,
|
||||||
@ -631,7 +631,7 @@ var yyR1 = []int{
|
|||||||
94, 94, 93, 93, 125, 125, 100, 100, 104, 104,
|
94, 94, 93, 93, 125, 125, 100, 100, 104, 104,
|
||||||
102, 102,
|
102, 102,
|
||||||
}
|
}
|
||||||
var yyR2 = []int{
|
var yyR2 = [...]int{
|
||||||
|
|
||||||
0, 4, 0, 3, 0, 3, 0, 3, 2, 5,
|
0, 4, 0, 3, 0, 3, 0, 3, 2, 5,
|
||||||
3, 3, 2, 1, 3, 1, 2, 2, 4, 0,
|
3, 3, 2, 1, 3, 1, 2, 2, 4, 0,
|
||||||
@ -670,7 +670,7 @@ var yyR2 = []int{
|
|||||||
2, 1, 1, 5, 0, 2, 1, 3, 1, 3,
|
2, 1, 1, 5, 0, 2, 1, 3, 1, 3,
|
||||||
1, 3,
|
1, 3,
|
||||||
}
|
}
|
||||||
var yyChk = []int{
|
var yyChk = [...]int{
|
||||||
|
|
||||||
-1000, -112, -113, -116, -114, 26, -117, 26, -115, -3,
|
-1000, -112, -113, -116, -114, 26, -117, 26, -115, -3,
|
||||||
25, -91, 74, 75, -118, -124, 25, -60, -119, 22,
|
25, -91, 74, 75, -118, -124, 25, -60, -119, 22,
|
||||||
@ -740,7 +740,7 @@ var yyChk = []int{
|
|||||||
15, 73, -58, 61, 61, 61, 61, -52, 67, 67,
|
15, 73, -58, 61, 61, 61, 61, -52, 67, 67,
|
||||||
21, -11, 69, -99, -99, -134, -24, -53,
|
21, -11, 69, -99, -99, -134, -24, -53,
|
||||||
}
|
}
|
||||||
var yyDef = []int{
|
var yyDef = [...]int{
|
||||||
|
|
||||||
4, -2, 2, 0, 6, 0, 21, 0, 218, 0,
|
4, -2, 2, 0, 6, 0, 21, 0, 218, 0,
|
||||||
157, 158, 159, 0, 5, 344, 19, -2, 0, 0,
|
157, 158, 159, 0, 5, 344, 19, -2, 0, 0,
|
||||||
@ -810,7 +810,7 @@ var yyDef = []int{
|
|||||||
0, 133, 0, 335, 343, 337, 335, 206, 56, 57,
|
0, 133, 0, 335, 343, 337, 335, 206, 56, 57,
|
||||||
82, 87, 145, 333, 208, 294, 0, 83,
|
82, 87, 145, 333, 208, 294, 0, 83,
|
||||||
}
|
}
|
||||||
var yyTok1 = []int{
|
var yyTok1 = [...]int{
|
||||||
|
|
||||||
1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||||
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||||
@ -826,7 +826,7 @@ var yyTok1 = []int{
|
|||||||
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||||
3, 3, 3, 68, 52, 69, 71,
|
3, 3, 3, 68, 52, 69, 71,
|
||||||
}
|
}
|
||||||
var yyTok2 = []int{
|
var yyTok2 = [...]int{
|
||||||
|
|
||||||
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
|
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
|
||||||
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
|
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
|
||||||
@ -835,7 +835,7 @@ var yyTok2 = []int{
|
|||||||
42, 43, 44, 45, 46, 47, 48, 49, 58, 59,
|
42, 43, 44, 45, 46, 47, 48, 49, 58, 59,
|
||||||
62,
|
62,
|
||||||
}
|
}
|
||||||
var yyTok3 = []int{
|
var yyTok3 = [...]int{
|
||||||
0,
|
0,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -517,14 +517,14 @@ outer:
|
|||||||
|
|
||||||
// put out names of token names
|
// put out names of token names
|
||||||
ftable.WriteRune('\n')
|
ftable.WriteRune('\n')
|
||||||
fmt.Fprintf(ftable, "var %sToknames = []string{\n", prefix)
|
fmt.Fprintf(ftable, "var %sToknames = [...]string{\n", prefix)
|
||||||
for i := TOKSTART; i <= ntokens; i++ {
|
for i := TOKSTART; i <= ntokens; i++ {
|
||||||
fmt.Fprintf(ftable, "\t\"%v\",\n", tokset[i].name)
|
fmt.Fprintf(ftable, "\t\"%v\",\n", tokset[i].name)
|
||||||
}
|
}
|
||||||
fmt.Fprintf(ftable, "}\n")
|
fmt.Fprintf(ftable, "}\n")
|
||||||
|
|
||||||
// put out names of state names
|
// put out names of state names
|
||||||
fmt.Fprintf(ftable, "var %sStatenames = []string{", prefix)
|
fmt.Fprintf(ftable, "var %sStatenames = [...]string{", prefix)
|
||||||
// for i:=TOKSTART; i<=ntokens; i++ {
|
// for i:=TOKSTART; i<=ntokens; i++ {
|
||||||
// fmt.Fprintf(ftable, "\t\"%v\",\n", tokset[i].name);
|
// fmt.Fprintf(ftable, "\t\"%v\",\n", tokset[i].name);
|
||||||
// }
|
// }
|
||||||
@ -2156,7 +2156,7 @@ func output() {
|
|||||||
if !lflag {
|
if !lflag {
|
||||||
fmt.Fprintf(ftable, "\n//line yacctab:1")
|
fmt.Fprintf(ftable, "\n//line yacctab:1")
|
||||||
}
|
}
|
||||||
fmt.Fprintf(ftable, "\nvar %sExca = []int{\n", prefix)
|
fmt.Fprintf(ftable, "\nvar %sExca = [...]int{\n", prefix)
|
||||||
|
|
||||||
noset := mkset()
|
noset := mkset()
|
||||||
|
|
||||||
@ -2892,7 +2892,7 @@ func others() {
|
|||||||
arout("Tok2", temp1, c+1)
|
arout("Tok2", temp1, c+1)
|
||||||
|
|
||||||
// table 3 has everything else
|
// table 3 has everything else
|
||||||
fmt.Fprintf(ftable, "var %sTok3 = []int{\n\t", prefix)
|
fmt.Fprintf(ftable, "var %sTok3 = [...]int{\n\t", prefix)
|
||||||
c = 0
|
c = 0
|
||||||
for i = 1; i <= ntokens; i++ {
|
for i = 1; i <= ntokens; i++ {
|
||||||
j = tokset[i].value
|
j = tokset[i].value
|
||||||
@ -2937,7 +2937,7 @@ func others() {
|
|||||||
|
|
||||||
func arout(s string, v []int, n int) {
|
func arout(s string, v []int, n int) {
|
||||||
s = prefix + s
|
s = prefix + s
|
||||||
fmt.Fprintf(ftable, "var %v = []int{\n", s)
|
fmt.Fprintf(ftable, "var %v = [...]int{\n", s)
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
if i%10 == 0 {
|
if i%10 == 0 {
|
||||||
fmt.Fprintf(ftable, "\n\t")
|
fmt.Fprintf(ftable, "\n\t")
|
||||||
|
Loading…
Reference in New Issue
Block a user