]> Cypherpunks.ru repositories - gostls13.git/blob - src/cmd/compile/internal/typecheck/_builtin/runtime.go
3fc45ab80dda4f42462c268c9cbac3e2c387ec64
[gostls13.git] / src / cmd / compile / internal / typecheck / _builtin / runtime.go
1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // NOTE: If you change this file you must run "go generate"
6 // to update builtin.go. This is not done automatically
7 // to avoid depending on having a working compiler binary.
8
9 //go:build ignore
10
11 package runtime
12
13 // emitted by compiler, not referred to by go programs
14
15 import "unsafe"
16
17 func newobject(typ *byte) *any
18 func mallocgc(size uintptr, typ *byte, needszero bool) unsafe.Pointer
19 func panicdivide()
20 func panicshift()
21 func panicmakeslicelen()
22 func panicmakeslicecap()
23 func throwinit()
24 func panicwrap()
25
26 func gopanic(interface{})
27 func gorecover(*int32) interface{}
28 func goschedguarded()
29
30 // Note: these declarations are just for wasm port.
31 // Other ports call assembly stubs instead.
32 func goPanicIndex(x int, y int)
33 func goPanicIndexU(x uint, y int)
34 func goPanicSliceAlen(x int, y int)
35 func goPanicSliceAlenU(x uint, y int)
36 func goPanicSliceAcap(x int, y int)
37 func goPanicSliceAcapU(x uint, y int)
38 func goPanicSliceB(x int, y int)
39 func goPanicSliceBU(x uint, y int)
40 func goPanicSlice3Alen(x int, y int)
41 func goPanicSlice3AlenU(x uint, y int)
42 func goPanicSlice3Acap(x int, y int)
43 func goPanicSlice3AcapU(x uint, y int)
44 func goPanicSlice3B(x int, y int)
45 func goPanicSlice3BU(x uint, y int)
46 func goPanicSlice3C(x int, y int)
47 func goPanicSlice3CU(x uint, y int)
48 func goPanicSliceConvert(x int, y int)
49
50 func printbool(bool)
51 func printfloat(float64)
52 func printint(int64)
53 func printhex(uint64)
54 func printuint(uint64)
55 func printcomplex(complex128)
56 func printstring(string)
57 func printpointer(any)
58 func printuintptr(uintptr)
59 func printiface(any)
60 func printeface(any)
61 func printslice(any)
62 func printnl()
63 func printsp()
64 func printlock()
65 func printunlock()
66
67 func concatstring2(*[32]byte, string, string) string
68 func concatstring3(*[32]byte, string, string, string) string
69 func concatstring4(*[32]byte, string, string, string, string) string
70 func concatstring5(*[32]byte, string, string, string, string, string) string
71 func concatstrings(*[32]byte, []string) string
72
73 func cmpstring(string, string) int
74 func intstring(*[4]byte, int64) string
75 func slicebytetostring(buf *[32]byte, ptr *byte, n int) string
76 func slicebytetostringtmp(ptr *byte, n int) string
77 func slicerunetostring(*[32]byte, []rune) string
78 func stringtoslicebyte(*[32]byte, string) []byte
79 func stringtoslicerune(*[32]rune, string) []rune
80 func slicecopy(toPtr *any, toLen int, fromPtr *any, fromLen int, wid uintptr) int
81
82 func decoderune(string, int) (retv rune, retk int)
83 func countrunes(string) int
84
85 // Convert non-interface type to the data word of a (empty or nonempty) interface.
86 func convT(typ *byte, elem *any) unsafe.Pointer
87
88 // Same as convT, for types with no pointers in them.
89 func convTnoptr(typ *byte, elem *any) unsafe.Pointer
90
91 // Specialized versions of convT for specific types.
92 // These functions take concrete types in the runtime. But they may
93 // be used for a wider range of types, which have the same memory
94 // layout as the parameter type. The compiler converts the
95 // to-be-converted type to the parameter type before calling the
96 // runtime function. This way, the call is ABI-insensitive.
97 func convT16(val uint16) unsafe.Pointer
98 func convT32(val uint32) unsafe.Pointer
99 func convT64(val uint64) unsafe.Pointer
100 func convTstring(val string) unsafe.Pointer
101 func convTslice(val []uint8) unsafe.Pointer
102
103 // interface type assertions x.(T)
104 func assertE2I(inter *byte, typ *byte) *byte
105 func assertE2I2(inter *byte, typ *byte) *byte
106 func panicdottypeE(have, want, iface *byte)
107 func panicdottypeI(have, want, iface *byte)
108 func panicnildottype(want *byte)
109 func typeAssert(s *byte, typ *byte) *byte
110
111 // interface switches
112 func interfaceSwitch(s *byte, t *byte) (int, *byte)
113
114 // interface equality. Type/itab pointers are already known to be equal, so
115 // we only need to pass one.
116 func ifaceeq(tab *uintptr, x, y unsafe.Pointer) (ret bool)
117 func efaceeq(typ *uintptr, x, y unsafe.Pointer) (ret bool)
118
119 // defer in range over func
120 func deferrangefunc() interface{}
121
122 func fastrand() uint32
123
124 // *byte is really *runtime.Type
125 func makemap64(mapType *byte, hint int64, mapbuf *any) (hmap map[any]any)
126 func makemap(mapType *byte, hint int, mapbuf *any) (hmap map[any]any)
127 func makemap_small() (hmap map[any]any)
128 func mapaccess1(mapType *byte, hmap map[any]any, key *any) (val *any)
129 func mapaccess1_fast32(mapType *byte, hmap map[any]any, key uint32) (val *any)
130 func mapaccess1_fast64(mapType *byte, hmap map[any]any, key uint64) (val *any)
131 func mapaccess1_faststr(mapType *byte, hmap map[any]any, key string) (val *any)
132 func mapaccess1_fat(mapType *byte, hmap map[any]any, key *any, zero *byte) (val *any)
133 func mapaccess2(mapType *byte, hmap map[any]any, key *any) (val *any, pres bool)
134 func mapaccess2_fast32(mapType *byte, hmap map[any]any, key uint32) (val *any, pres bool)
135 func mapaccess2_fast64(mapType *byte, hmap map[any]any, key uint64) (val *any, pres bool)
136 func mapaccess2_faststr(mapType *byte, hmap map[any]any, key string) (val *any, pres bool)
137 func mapaccess2_fat(mapType *byte, hmap map[any]any, key *any, zero *byte) (val *any, pres bool)
138 func mapassign(mapType *byte, hmap map[any]any, key *any) (val *any)
139 func mapassign_fast32(mapType *byte, hmap map[any]any, key uint32) (val *any)
140 func mapassign_fast32ptr(mapType *byte, hmap map[any]any, key unsafe.Pointer) (val *any)
141 func mapassign_fast64(mapType *byte, hmap map[any]any, key uint64) (val *any)
142 func mapassign_fast64ptr(mapType *byte, hmap map[any]any, key unsafe.Pointer) (val *any)
143 func mapassign_faststr(mapType *byte, hmap map[any]any, key string) (val *any)
144 func mapiterinit(mapType *byte, hmap map[any]any, hiter *any)
145 func mapdelete(mapType *byte, hmap map[any]any, key *any)
146 func mapdelete_fast32(mapType *byte, hmap map[any]any, key uint32)
147 func mapdelete_fast64(mapType *byte, hmap map[any]any, key uint64)
148 func mapdelete_faststr(mapType *byte, hmap map[any]any, key string)
149 func mapiternext(hiter *any)
150 func mapclear(mapType *byte, hmap map[any]any)
151
152 // *byte is really *runtime.Type
153 func makechan64(chanType *byte, size int64) (hchan chan any)
154 func makechan(chanType *byte, size int) (hchan chan any)
155 func chanrecv1(hchan <-chan any, elem *any)
156 func chanrecv2(hchan <-chan any, elem *any) bool
157 func chansend1(hchan chan<- any, elem *any)
158 func closechan(hchan any)
159
160 var writeBarrier struct {
161         enabled bool
162         pad     [3]byte
163         needed  bool
164         cgo     bool
165         alignme uint64
166 }
167
168 // *byte is really *runtime.Type
169 func typedmemmove(typ *byte, dst *any, src *any)
170 func typedmemclr(typ *byte, dst *any)
171 func typedslicecopy(typ *byte, dstPtr *any, dstLen int, srcPtr *any, srcLen int) int
172
173 func selectnbsend(hchan chan<- any, elem *any) bool
174 func selectnbrecv(elem *any, hchan <-chan any) (bool, bool)
175
176 func selectsetpc(pc *uintptr)
177 func selectgo(cas0 *byte, order0 *byte, pc0 *uintptr, nsends int, nrecvs int, block bool) (int, bool)
178 func block()
179
180 func makeslice(typ *byte, len int, cap int) unsafe.Pointer
181 func makeslice64(typ *byte, len int64, cap int64) unsafe.Pointer
182 func makeslicecopy(typ *byte, tolen int, fromlen int, from unsafe.Pointer) unsafe.Pointer
183 func growslice(oldPtr *any, newLen, oldCap, num int, et *byte) (ary []any)
184 func unsafeslicecheckptr(typ *byte, ptr unsafe.Pointer, len int64)
185 func panicunsafeslicelen()
186 func panicunsafeslicenilptr()
187 func unsafestringcheckptr(ptr unsafe.Pointer, len int64)
188 func panicunsafestringlen()
189 func panicunsafestringnilptr()
190
191 func memmove(to *any, frm *any, length uintptr)
192 func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr)
193 func memclrHasPointers(ptr unsafe.Pointer, n uintptr)
194
195 func memequal(x, y *any, size uintptr) bool
196 func memequal0(x, y *any) bool
197 func memequal8(x, y *any) bool
198 func memequal16(x, y *any) bool
199 func memequal32(x, y *any) bool
200 func memequal64(x, y *any) bool
201 func memequal128(x, y *any) bool
202 func f32equal(p, q unsafe.Pointer) bool
203 func f64equal(p, q unsafe.Pointer) bool
204 func c64equal(p, q unsafe.Pointer) bool
205 func c128equal(p, q unsafe.Pointer) bool
206 func strequal(p, q unsafe.Pointer) bool
207 func interequal(p, q unsafe.Pointer) bool
208 func nilinterequal(p, q unsafe.Pointer) bool
209
210 func memhash(x *any, h uintptr, size uintptr) uintptr
211 func memhash0(p unsafe.Pointer, h uintptr) uintptr
212 func memhash8(p unsafe.Pointer, h uintptr) uintptr
213 func memhash16(p unsafe.Pointer, h uintptr) uintptr
214 func memhash32(p unsafe.Pointer, h uintptr) uintptr
215 func memhash64(p unsafe.Pointer, h uintptr) uintptr
216 func memhash128(p unsafe.Pointer, h uintptr) uintptr
217 func f32hash(p *any, h uintptr) uintptr
218 func f64hash(p *any, h uintptr) uintptr
219 func c64hash(p *any, h uintptr) uintptr
220 func c128hash(p *any, h uintptr) uintptr
221 func strhash(a *any, h uintptr) uintptr
222 func interhash(p *any, h uintptr) uintptr
223 func nilinterhash(p *any, h uintptr) uintptr
224
225 // only used on 32-bit
226 func int64div(int64, int64) int64
227 func uint64div(uint64, uint64) uint64
228 func int64mod(int64, int64) int64
229 func uint64mod(uint64, uint64) uint64
230 func float64toint64(float64) int64
231 func float64touint64(float64) uint64
232 func float64touint32(float64) uint32
233 func int64tofloat64(int64) float64
234 func int64tofloat32(int64) float32
235 func uint64tofloat64(uint64) float64
236 func uint64tofloat32(uint64) float32
237 func uint32tofloat64(uint32) float64
238
239 func complex128div(num complex128, den complex128) (quo complex128)
240
241 func getcallerpc() uintptr
242 func getcallersp() uintptr
243
244 // race detection
245 func racefuncenter(uintptr)
246 func racefuncexit()
247 func raceread(uintptr)
248 func racewrite(uintptr)
249 func racereadrange(addr, size uintptr)
250 func racewriterange(addr, size uintptr)
251
252 // memory sanitizer
253 func msanread(addr, size uintptr)
254 func msanwrite(addr, size uintptr)
255 func msanmove(dst, src, size uintptr)
256
257 // address sanitizer
258 func asanread(addr, size uintptr)
259 func asanwrite(addr, size uintptr)
260
261 func checkptrAlignment(unsafe.Pointer, *byte, uintptr)
262 func checkptrArithmetic(unsafe.Pointer, []unsafe.Pointer)
263
264 func libfuzzerTraceCmp1(uint8, uint8, uint)
265 func libfuzzerTraceCmp2(uint16, uint16, uint)
266 func libfuzzerTraceCmp4(uint32, uint32, uint)
267 func libfuzzerTraceCmp8(uint64, uint64, uint)
268 func libfuzzerTraceConstCmp1(uint8, uint8, uint)
269 func libfuzzerTraceConstCmp2(uint16, uint16, uint)
270 func libfuzzerTraceConstCmp4(uint32, uint32, uint)
271 func libfuzzerTraceConstCmp8(uint64, uint64, uint)
272 func libfuzzerHookStrCmp(string, string, uint)
273 func libfuzzerHookEqualFold(string, string, uint)
274
275 func addCovMeta(p unsafe.Pointer, len uint32, hash [16]byte, pkpath string, pkgId int, cmode uint8, cgran uint8) uint32
276
277 // architecture variants
278 var x86HasPOPCNT bool
279 var x86HasSSE41 bool
280 var x86HasFMA bool
281 var armHasVFPv4 bool
282 var arm64HasATOMICS bool
283
284 func asanregisterglobals(unsafe.Pointer, uintptr)