Source file src/pkg/cmd/compile/internal/gc/builtin.go
1
2
3 package gc
4
5 import "cmd/compile/internal/types"
6
7 var runtimeDecls = [...]struct {
8 name string
9 tag int
10 typ int
11 }{
12 {"newobject", funcTag, 4},
13 {"panicdivide", funcTag, 5},
14 {"panicshift", funcTag, 5},
15 {"panicmakeslicelen", funcTag, 5},
16 {"throwinit", funcTag, 5},
17 {"panicwrap", funcTag, 5},
18 {"gopanic", funcTag, 7},
19 {"gorecover", funcTag, 10},
20 {"goschedguarded", funcTag, 5},
21 {"goPanicIndex", funcTag, 12},
22 {"goPanicIndexU", funcTag, 14},
23 {"goPanicSliceAlen", funcTag, 12},
24 {"goPanicSliceAlenU", funcTag, 14},
25 {"goPanicSliceAcap", funcTag, 12},
26 {"goPanicSliceAcapU", funcTag, 14},
27 {"goPanicSliceB", funcTag, 12},
28 {"goPanicSliceBU", funcTag, 14},
29 {"goPanicSlice3Alen", funcTag, 12},
30 {"goPanicSlice3AlenU", funcTag, 14},
31 {"goPanicSlice3Acap", funcTag, 12},
32 {"goPanicSlice3AcapU", funcTag, 14},
33 {"goPanicSlice3B", funcTag, 12},
34 {"goPanicSlice3BU", funcTag, 14},
35 {"goPanicSlice3C", funcTag, 12},
36 {"goPanicSlice3CU", funcTag, 14},
37 {"printbool", funcTag, 16},
38 {"printfloat", funcTag, 18},
39 {"printint", funcTag, 20},
40 {"printhex", funcTag, 22},
41 {"printuint", funcTag, 22},
42 {"printcomplex", funcTag, 24},
43 {"printstring", funcTag, 26},
44 {"printpointer", funcTag, 27},
45 {"printiface", funcTag, 27},
46 {"printeface", funcTag, 27},
47 {"printslice", funcTag, 27},
48 {"printnl", funcTag, 5},
49 {"printsp", funcTag, 5},
50 {"printlock", funcTag, 5},
51 {"printunlock", funcTag, 5},
52 {"concatstring2", funcTag, 30},
53 {"concatstring3", funcTag, 31},
54 {"concatstring4", funcTag, 32},
55 {"concatstring5", funcTag, 33},
56 {"concatstrings", funcTag, 35},
57 {"cmpstring", funcTag, 36},
58 {"intstring", funcTag, 39},
59 {"slicebytetostring", funcTag, 41},
60 {"slicebytetostringtmp", funcTag, 42},
61 {"slicerunetostring", funcTag, 45},
62 {"stringtoslicebyte", funcTag, 46},
63 {"stringtoslicerune", funcTag, 49},
64 {"slicecopy", funcTag, 51},
65 {"slicestringcopy", funcTag, 52},
66 {"decoderune", funcTag, 53},
67 {"countrunes", funcTag, 54},
68 {"convI2I", funcTag, 55},
69 {"convT16", funcTag, 57},
70 {"convT32", funcTag, 57},
71 {"convT64", funcTag, 57},
72 {"convTstring", funcTag, 57},
73 {"convTslice", funcTag, 57},
74 {"convT2E", funcTag, 58},
75 {"convT2Enoptr", funcTag, 58},
76 {"convT2I", funcTag, 58},
77 {"convT2Inoptr", funcTag, 58},
78 {"assertE2I", funcTag, 55},
79 {"assertE2I2", funcTag, 59},
80 {"assertI2I", funcTag, 55},
81 {"assertI2I2", funcTag, 59},
82 {"panicdottypeE", funcTag, 60},
83 {"panicdottypeI", funcTag, 60},
84 {"panicnildottype", funcTag, 61},
85 {"ifaceeq", funcTag, 63},
86 {"efaceeq", funcTag, 63},
87 {"fastrand", funcTag, 65},
88 {"makemap64", funcTag, 67},
89 {"makemap", funcTag, 68},
90 {"makemap_small", funcTag, 69},
91 {"mapaccess1", funcTag, 70},
92 {"mapaccess1_fast32", funcTag, 71},
93 {"mapaccess1_fast64", funcTag, 71},
94 {"mapaccess1_faststr", funcTag, 71},
95 {"mapaccess1_fat", funcTag, 72},
96 {"mapaccess2", funcTag, 73},
97 {"mapaccess2_fast32", funcTag, 74},
98 {"mapaccess2_fast64", funcTag, 74},
99 {"mapaccess2_faststr", funcTag, 74},
100 {"mapaccess2_fat", funcTag, 75},
101 {"mapassign", funcTag, 70},
102 {"mapassign_fast32", funcTag, 71},
103 {"mapassign_fast32ptr", funcTag, 71},
104 {"mapassign_fast64", funcTag, 71},
105 {"mapassign_fast64ptr", funcTag, 71},
106 {"mapassign_faststr", funcTag, 71},
107 {"mapiterinit", funcTag, 76},
108 {"mapdelete", funcTag, 76},
109 {"mapdelete_fast32", funcTag, 77},
110 {"mapdelete_fast64", funcTag, 77},
111 {"mapdelete_faststr", funcTag, 77},
112 {"mapiternext", funcTag, 78},
113 {"mapclear", funcTag, 79},
114 {"makechan64", funcTag, 81},
115 {"makechan", funcTag, 82},
116 {"chanrecv1", funcTag, 84},
117 {"chanrecv2", funcTag, 85},
118 {"chansend1", funcTag, 87},
119 {"closechan", funcTag, 27},
120 {"writeBarrier", varTag, 89},
121 {"typedmemmove", funcTag, 90},
122 {"typedmemclr", funcTag, 91},
123 {"typedslicecopy", funcTag, 92},
124 {"selectnbsend", funcTag, 93},
125 {"selectnbrecv", funcTag, 94},
126 {"selectnbrecv2", funcTag, 96},
127 {"selectsetpc", funcTag, 61},
128 {"selectgo", funcTag, 97},
129 {"block", funcTag, 5},
130 {"makeslice", funcTag, 98},
131 {"makeslice64", funcTag, 99},
132 {"growslice", funcTag, 101},
133 {"memmove", funcTag, 102},
134 {"memclrNoHeapPointers", funcTag, 103},
135 {"memclrHasPointers", funcTag, 103},
136 {"memequal", funcTag, 104},
137 {"memequal8", funcTag, 105},
138 {"memequal16", funcTag, 105},
139 {"memequal32", funcTag, 105},
140 {"memequal64", funcTag, 105},
141 {"memequal128", funcTag, 105},
142 {"int64div", funcTag, 106},
143 {"uint64div", funcTag, 107},
144 {"int64mod", funcTag, 106},
145 {"uint64mod", funcTag, 107},
146 {"float64toint64", funcTag, 108},
147 {"float64touint64", funcTag, 109},
148 {"float64touint32", funcTag, 110},
149 {"int64tofloat64", funcTag, 111},
150 {"uint64tofloat64", funcTag, 112},
151 {"uint32tofloat64", funcTag, 113},
152 {"complex128div", funcTag, 114},
153 {"racefuncenter", funcTag, 115},
154 {"racefuncenterfp", funcTag, 5},
155 {"racefuncexit", funcTag, 5},
156 {"raceread", funcTag, 115},
157 {"racewrite", funcTag, 115},
158 {"racereadrange", funcTag, 116},
159 {"racewriterange", funcTag, 116},
160 {"msanread", funcTag, 116},
161 {"msanwrite", funcTag, 116},
162 {"x86HasPOPCNT", varTag, 15},
163 {"x86HasSSE41", varTag, 15},
164 {"arm64HasATOMICS", varTag, 15},
165 }
166
167 func runtimeTypes() []*types.Type {
168 var typs [117]*types.Type
169 typs[0] = types.Bytetype
170 typs[1] = types.NewPtr(typs[0])
171 typs[2] = types.Types[TANY]
172 typs[3] = types.NewPtr(typs[2])
173 typs[4] = functype(nil, []*Node{anonfield(typs[1])}, []*Node{anonfield(typs[3])})
174 typs[5] = functype(nil, nil, nil)
175 typs[6] = types.Types[TINTER]
176 typs[7] = functype(nil, []*Node{anonfield(typs[6])}, nil)
177 typs[8] = types.Types[TINT32]
178 typs[9] = types.NewPtr(typs[8])
179 typs[10] = functype(nil, []*Node{anonfield(typs[9])}, []*Node{anonfield(typs[6])})
180 typs[11] = types.Types[TINT]
181 typs[12] = functype(nil, []*Node{anonfield(typs[11]), anonfield(typs[11])}, nil)
182 typs[13] = types.Types[TUINT]
183 typs[14] = functype(nil, []*Node{anonfield(typs[13]), anonfield(typs[11])}, nil)
184 typs[15] = types.Types[TBOOL]
185 typs[16] = functype(nil, []*Node{anonfield(typs[15])}, nil)
186 typs[17] = types.Types[TFLOAT64]
187 typs[18] = functype(nil, []*Node{anonfield(typs[17])}, nil)
188 typs[19] = types.Types[TINT64]
189 typs[20] = functype(nil, []*Node{anonfield(typs[19])}, nil)
190 typs[21] = types.Types[TUINT64]
191 typs[22] = functype(nil, []*Node{anonfield(typs[21])}, nil)
192 typs[23] = types.Types[TCOMPLEX128]
193 typs[24] = functype(nil, []*Node{anonfield(typs[23])}, nil)
194 typs[25] = types.Types[TSTRING]
195 typs[26] = functype(nil, []*Node{anonfield(typs[25])}, nil)
196 typs[27] = functype(nil, []*Node{anonfield(typs[2])}, nil)
197 typs[28] = types.NewArray(typs[0], 32)
198 typs[29] = types.NewPtr(typs[28])
199 typs[30] = functype(nil, []*Node{anonfield(typs[29]), anonfield(typs[25]), anonfield(typs[25])}, []*Node{anonfield(typs[25])})
200 typs[31] = functype(nil, []*Node{anonfield(typs[29]), anonfield(typs[25]), anonfield(typs[25]), anonfield(typs[25])}, []*Node{anonfield(typs[25])})
201 typs[32] = functype(nil, []*Node{anonfield(typs[29]), anonfield(typs[25]), anonfield(typs[25]), anonfield(typs[25]), anonfield(typs[25])}, []*Node{anonfield(typs[25])})
202 typs[33] = functype(nil, []*Node{anonfield(typs[29]), anonfield(typs[25]), anonfield(typs[25]), anonfield(typs[25]), anonfield(typs[25]), anonfield(typs[25])}, []*Node{anonfield(typs[25])})
203 typs[34] = types.NewSlice(typs[25])
204 typs[35] = functype(nil, []*Node{anonfield(typs[29]), anonfield(typs[34])}, []*Node{anonfield(typs[25])})
205 typs[36] = functype(nil, []*Node{anonfield(typs[25]), anonfield(typs[25])}, []*Node{anonfield(typs[11])})
206 typs[37] = types.NewArray(typs[0], 4)
207 typs[38] = types.NewPtr(typs[37])
208 typs[39] = functype(nil, []*Node{anonfield(typs[38]), anonfield(typs[19])}, []*Node{anonfield(typs[25])})
209 typs[40] = types.NewSlice(typs[0])
210 typs[41] = functype(nil, []*Node{anonfield(typs[29]), anonfield(typs[40])}, []*Node{anonfield(typs[25])})
211 typs[42] = functype(nil, []*Node{anonfield(typs[40])}, []*Node{anonfield(typs[25])})
212 typs[43] = types.Runetype
213 typs[44] = types.NewSlice(typs[43])
214 typs[45] = functype(nil, []*Node{anonfield(typs[29]), anonfield(typs[44])}, []*Node{anonfield(typs[25])})
215 typs[46] = functype(nil, []*Node{anonfield(typs[29]), anonfield(typs[25])}, []*Node{anonfield(typs[40])})
216 typs[47] = types.NewArray(typs[43], 32)
217 typs[48] = types.NewPtr(typs[47])
218 typs[49] = functype(nil, []*Node{anonfield(typs[48]), anonfield(typs[25])}, []*Node{anonfield(typs[44])})
219 typs[50] = types.Types[TUINTPTR]
220 typs[51] = functype(nil, []*Node{anonfield(typs[2]), anonfield(typs[2]), anonfield(typs[50])}, []*Node{anonfield(typs[11])})
221 typs[52] = functype(nil, []*Node{anonfield(typs[2]), anonfield(typs[2])}, []*Node{anonfield(typs[11])})
222 typs[53] = functype(nil, []*Node{anonfield(typs[25]), anonfield(typs[11])}, []*Node{anonfield(typs[43]), anonfield(typs[11])})
223 typs[54] = functype(nil, []*Node{anonfield(typs[25])}, []*Node{anonfield(typs[11])})
224 typs[55] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[2])}, []*Node{anonfield(typs[2])})
225 typs[56] = types.Types[TUNSAFEPTR]
226 typs[57] = functype(nil, []*Node{anonfield(typs[2])}, []*Node{anonfield(typs[56])})
227 typs[58] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3])}, []*Node{anonfield(typs[2])})
228 typs[59] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[2])}, []*Node{anonfield(typs[2]), anonfield(typs[15])})
229 typs[60] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[1]), anonfield(typs[1])}, nil)
230 typs[61] = functype(nil, []*Node{anonfield(typs[1])}, nil)
231 typs[62] = types.NewPtr(typs[50])
232 typs[63] = functype(nil, []*Node{anonfield(typs[62]), anonfield(typs[56]), anonfield(typs[56])}, []*Node{anonfield(typs[15])})
233 typs[64] = types.Types[TUINT32]
234 typs[65] = functype(nil, nil, []*Node{anonfield(typs[64])})
235 typs[66] = types.NewMap(typs[2], typs[2])
236 typs[67] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[19]), anonfield(typs[3])}, []*Node{anonfield(typs[66])})
237 typs[68] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[11]), anonfield(typs[3])}, []*Node{anonfield(typs[66])})
238 typs[69] = functype(nil, nil, []*Node{anonfield(typs[66])})
239 typs[70] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3])}, []*Node{anonfield(typs[3])})
240 typs[71] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[2])}, []*Node{anonfield(typs[3])})
241 typs[72] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3]), anonfield(typs[1])}, []*Node{anonfield(typs[3])})
242 typs[73] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3])}, []*Node{anonfield(typs[3]), anonfield(typs[15])})
243 typs[74] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[2])}, []*Node{anonfield(typs[3]), anonfield(typs[15])})
244 typs[75] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3]), anonfield(typs[1])}, []*Node{anonfield(typs[3]), anonfield(typs[15])})
245 typs[76] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3])}, nil)
246 typs[77] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[2])}, nil)
247 typs[78] = functype(nil, []*Node{anonfield(typs[3])}, nil)
248 typs[79] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66])}, nil)
249 typs[80] = types.NewChan(typs[2], types.Cboth)
250 typs[81] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[19])}, []*Node{anonfield(typs[80])})
251 typs[82] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[11])}, []*Node{anonfield(typs[80])})
252 typs[83] = types.NewChan(typs[2], types.Crecv)
253 typs[84] = functype(nil, []*Node{anonfield(typs[83]), anonfield(typs[3])}, nil)
254 typs[85] = functype(nil, []*Node{anonfield(typs[83]), anonfield(typs[3])}, []*Node{anonfield(typs[15])})
255 typs[86] = types.NewChan(typs[2], types.Csend)
256 typs[87] = functype(nil, []*Node{anonfield(typs[86]), anonfield(typs[3])}, nil)
257 typs[88] = types.NewArray(typs[0], 3)
258 typs[89] = tostruct([]*Node{namedfield("enabled", typs[15]), namedfield("pad", typs[88]), namedfield("needed", typs[15]), namedfield("cgo", typs[15]), namedfield("alignme", typs[21])})
259 typs[90] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3]), anonfield(typs[3])}, nil)
260 typs[91] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3])}, nil)
261 typs[92] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[2]), anonfield(typs[2])}, []*Node{anonfield(typs[11])})
262 typs[93] = functype(nil, []*Node{anonfield(typs[86]), anonfield(typs[3])}, []*Node{anonfield(typs[15])})
263 typs[94] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[83])}, []*Node{anonfield(typs[15])})
264 typs[95] = types.NewPtr(typs[15])
265 typs[96] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[95]), anonfield(typs[83])}, []*Node{anonfield(typs[15])})
266 typs[97] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[1]), anonfield(typs[11])}, []*Node{anonfield(typs[11]), anonfield(typs[15])})
267 typs[98] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[11]), anonfield(typs[11])}, []*Node{anonfield(typs[56])})
268 typs[99] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[19]), anonfield(typs[19])}, []*Node{anonfield(typs[56])})
269 typs[100] = types.NewSlice(typs[2])
270 typs[101] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[100]), anonfield(typs[11])}, []*Node{anonfield(typs[100])})
271 typs[102] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3]), anonfield(typs[50])}, nil)
272 typs[103] = functype(nil, []*Node{anonfield(typs[56]), anonfield(typs[50])}, nil)
273 typs[104] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3]), anonfield(typs[50])}, []*Node{anonfield(typs[15])})
274 typs[105] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3])}, []*Node{anonfield(typs[15])})
275 typs[106] = functype(nil, []*Node{anonfield(typs[19]), anonfield(typs[19])}, []*Node{anonfield(typs[19])})
276 typs[107] = functype(nil, []*Node{anonfield(typs[21]), anonfield(typs[21])}, []*Node{anonfield(typs[21])})
277 typs[108] = functype(nil, []*Node{anonfield(typs[17])}, []*Node{anonfield(typs[19])})
278 typs[109] = functype(nil, []*Node{anonfield(typs[17])}, []*Node{anonfield(typs[21])})
279 typs[110] = functype(nil, []*Node{anonfield(typs[17])}, []*Node{anonfield(typs[64])})
280 typs[111] = functype(nil, []*Node{anonfield(typs[19])}, []*Node{anonfield(typs[17])})
281 typs[112] = functype(nil, []*Node{anonfield(typs[21])}, []*Node{anonfield(typs[17])})
282 typs[113] = functype(nil, []*Node{anonfield(typs[64])}, []*Node{anonfield(typs[17])})
283 typs[114] = functype(nil, []*Node{anonfield(typs[23]), anonfield(typs[23])}, []*Node{anonfield(typs[23])})
284 typs[115] = functype(nil, []*Node{anonfield(typs[50])}, nil)
285 typs[116] = functype(nil, []*Node{anonfield(typs[50]), anonfield(typs[50])}, nil)
286 return typs[:]
287 }
288
View as plain text