Source file src/pkg/cmd/compile/internal/gc/go.go
1
2
3
4
5 package gc
6
7 import (
8 "cmd/compile/internal/ssa"
9 "cmd/compile/internal/types"
10 "cmd/internal/obj"
11 "cmd/internal/src"
12 "sync"
13 )
14
15 const (
16 BADWIDTH = types.BADWIDTH
17 )
18
19 var (
20
21
22
23 maxStackVarSize = int64(10 * 1024 * 1024)
24
25
26
27
28
29
30
31 maxImplicitStackVarSize = int64(64 * 1024)
32 )
33
34
35 func isRuntimePkg(p *types.Pkg) bool {
36 if compiling_runtime && p == localpkg {
37 return true
38 }
39 return p.Path == "runtime"
40 }
41
42
43
44
45 type Class uint8
46
47
48 const (
49 Pxxx Class = iota
50 PEXTERN
51 PAUTO
52 PAUTOHEAP
53 PPARAM
54 PPARAMOUT
55 PFUNC
56
57 PDISCARD
58
59
60 )
61
62 func init() {
63 if PDISCARD != 7 {
64 panic("PDISCARD changed; does all Class values still fit in three bits?")
65 }
66 }
67
68
69
70
71
72
73
74
75
76
77 var array_array int
78
79 var array_nel int
80
81 var array_cap int
82
83 var sizeof_Array int
84
85
86
87
88
89
90
91
92
93 var sizeof_String int
94
95 var pragcgobuf [][]string
96
97 var outfile string
98 var linkobj string
99
100
101
102 var nerrors int
103
104
105
106 var nsavederrors int
107
108 var nsyntaxerrors int
109
110 var decldepth int32
111
112 var nolocalimports bool
113
114 var Debug [256]int
115
116 var debugstr string
117
118 var Debug_checknil int
119 var Debug_typeassert int
120
121 var localpkg *types.Pkg
122
123 var inimport bool
124
125 var itabpkg *types.Pkg
126
127 var itablinkpkg *types.Pkg
128
129 var Runtimepkg *types.Pkg
130
131 var racepkg *types.Pkg
132
133 var msanpkg *types.Pkg
134
135 var unsafepkg *types.Pkg
136
137 var trackpkg *types.Pkg
138
139 var mappkg *types.Pkg
140
141 var gopkg *types.Pkg
142
143 var zerosize int64
144
145 var myimportpath string
146
147 var localimport string
148
149 var asmhdr string
150
151 var simtype [NTYPE]types.EType
152
153 var (
154 isInt [NTYPE]bool
155 isFloat [NTYPE]bool
156 isComplex [NTYPE]bool
157 issimple [NTYPE]bool
158 )
159
160 var (
161 okforeq [NTYPE]bool
162 okforadd [NTYPE]bool
163 okforand [NTYPE]bool
164 okfornone [NTYPE]bool
165 okforcmp [NTYPE]bool
166 okforbool [NTYPE]bool
167 okforcap [NTYPE]bool
168 okforlen [NTYPE]bool
169 okforarith [NTYPE]bool
170 okforconst [NTYPE]bool
171 )
172
173 var (
174 okfor [OEND][]bool
175 iscmp [OEND]bool
176 )
177
178 var minintval [NTYPE]*Mpint
179
180 var maxintval [NTYPE]*Mpint
181
182 var minfltval [NTYPE]*Mpflt
183
184 var maxfltval [NTYPE]*Mpflt
185
186 var xtop []*Node
187
188 var exportlist []*Node
189
190 var importlist []*Node
191
192 var (
193 funcsymsmu sync.Mutex
194 funcsyms []*types.Sym
195 )
196
197 var dclcontext Class
198
199 var Curfn *Node
200
201 var Widthptr int
202
203 var Widthreg int
204
205 var nblank *Node
206
207 var typecheckok bool
208
209 var compiling_runtime bool
210
211
212 var compiling_std bool
213
214 var use_writebarrier bool
215
216 var pure_go bool
217
218 var flag_installsuffix string
219
220 var flag_race bool
221
222 var flag_msan bool
223
224 var flagDWARF bool
225
226
227
228 var instrumenting bool
229
230
231 var trackScopes bool
232
233
234
235
236 var genDwarfInline int
237
238 var debuglive int
239
240 var Ctxt *obj.Link
241
242 var writearchive bool
243
244 var Nacl bool
245
246 var nodfp *Node
247
248 var disable_checknil int
249
250 var autogeneratedPos src.XPos
251
252
253
254 type Arch struct {
255 LinkArch *obj.LinkArch
256
257 REGSP int
258 MAXWIDTH int64
259 Use387 bool
260 SoftFloat bool
261
262 PadFrame func(int64) int64
263 ZeroRange func(*Progs, *obj.Prog, int64, int64, *uint32) *obj.Prog
264 Ginsnop func(*Progs) *obj.Prog
265 Ginsnopdefer func(*Progs) *obj.Prog
266
267
268 SSAMarkMoves func(*SSAGenState, *ssa.Block)
269
270
271 SSAGenValue func(*SSAGenState, *ssa.Value)
272
273
274
275 SSAGenBlock func(s *SSAGenState, b, next *ssa.Block)
276
277
278
279
280 ZeroAuto func(*Progs, *Node)
281 }
282
283 var thearch Arch
284
285 var (
286 staticbytes,
287 zerobase *Node
288
289 assertE2I,
290 assertE2I2,
291 assertI2I,
292 assertI2I2,
293 deferproc,
294 deferprocStack,
295 Deferreturn,
296 Duffcopy,
297 Duffzero,
298 gcWriteBarrier,
299 goschedguarded,
300 growslice,
301 msanread,
302 msanwrite,
303 newobject,
304 newproc,
305 panicdivide,
306 panicshift,
307 panicdottypeE,
308 panicdottypeI,
309 panicnildottype,
310 panicoverflow,
311 raceread,
312 racereadrange,
313 racewrite,
314 racewriterange,
315 x86HasPOPCNT,
316 x86HasSSE41,
317 arm64HasATOMICS,
318 typedmemclr,
319 typedmemmove,
320 Udiv,
321 writeBarrier,
322 zerobaseSym *obj.LSym
323
324 BoundsCheckFunc [ssa.BoundsKindCount]*obj.LSym
325 ExtendCheckFunc [ssa.BoundsKindCount]*obj.LSym
326
327
328 ControlWord64trunc,
329 ControlWord32 *obj.LSym
330
331
332 WasmMove,
333 WasmZero,
334 WasmDiv,
335 WasmTruncS,
336 WasmTruncU,
337 SigPanic *obj.LSym
338 )
339
View as plain text