]> Cypherpunks.ru repositories - gostls13.git/blob - src/cmd/compile/internal/gc/builtin/runtime.go
[dev.ssa] Merge remote-tracking branch 'origin/master' into mergebranch
[gostls13.git] / src / cmd / compile / internal / gc / 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 // +build ignore
10
11 package PACKAGE
12
13 // emitted by compiler, not referred to by go programs
14
15 func newobject(typ *byte) *any
16 func panicindex()
17 func panicslice()
18 func panicdivide()
19 func throwreturn()
20 func throwinit()
21 func panicwrap(string, string, string)
22
23 func gopanic(interface{})
24 func gorecover(*int32) interface{}
25
26 func printbool(bool)
27 func printfloat(float64)
28 func printint(int64)
29 func printhex(uint64)
30 func printuint(uint64)
31 func printcomplex(complex128)
32 func printstring(string)
33 func printpointer(any)
34 func printiface(any)
35 func printeface(any)
36 func printslice(any)
37 func printnl()
38 func printsp()
39 func printlock()
40 func printunlock()
41
42 func concatstring2(*[32]byte, string, string) string
43 func concatstring3(*[32]byte, string, string, string) string
44 func concatstring4(*[32]byte, string, string, string, string) string
45 func concatstring5(*[32]byte, string, string, string, string, string) string
46 func concatstrings(*[32]byte, []string) string
47
48 func cmpstring(string, string) int
49 func eqstring(string, string) bool
50 func intstring(*[4]byte, int64) string
51 func slicebytetostring(*[32]byte, []byte) string
52 func slicebytetostringtmp([]byte) string
53 func slicerunetostring(*[32]byte, []rune) string
54 func stringtoslicebyte(*[32]byte, string) []byte
55 func stringtoslicebytetmp(string) []byte
56 func stringtoslicerune(*[32]rune, string) []rune
57 func stringiter(string, int) int
58 func stringiter2(string, int) (retk int, retv rune)
59 func slicecopy(to any, fr any, wid uintptr) int
60 func slicestringcopy(to any, fr any) int
61
62 // interface conversions
63 func typ2Itab(typ *byte, typ2 *byte, cache **byte) (ret *byte)
64 func convI2E(elem any) (ret any)
65 func convI2I(typ *byte, elem any) (ret any)
66 func convT2E(typ *byte, elem, buf *any) (ret any)
67 func convT2I(typ *byte, typ2 *byte, cache **byte, elem, buf *any) (ret any)
68
69 // interface type assertions  x.(T)
70 func assertE2E(typ *byte, iface any, ret *any)
71 func assertE2E2(typ *byte, iface any, ret *any) bool
72 func assertE2I(typ *byte, iface any, ret *any)
73 func assertE2I2(typ *byte, iface any, ret *any) bool
74 func assertE2T(typ *byte, iface any, ret *any)
75 func assertE2T2(typ *byte, iface any, ret *any) bool
76 func assertI2E(typ *byte, iface any, ret *any)
77 func assertI2E2(typ *byte, iface any, ret *any) bool
78 func assertI2I(typ *byte, iface any, ret *any)
79 func assertI2I2(typ *byte, iface any, ret *any) bool
80 func assertI2T(typ *byte, iface any, ret *any)
81 func assertI2T2(typ *byte, iface any, ret *any) bool
82 func panicdottype(have, want, iface *byte)
83
84 func ifaceeq(i1 any, i2 any) (ret bool)
85 func efaceeq(i1 any, i2 any) (ret bool)
86 func ifacethash(i1 any) (ret uint32)
87 func efacethash(i1 any) (ret uint32)
88
89 // *byte is really *runtime.Type
90 func makemap(mapType *byte, hint int64, mapbuf *any, bucketbuf *any) (hmap map[any]any)
91 func mapaccess1(mapType *byte, hmap map[any]any, key *any) (val *any)
92 func mapaccess1_fast32(mapType *byte, hmap map[any]any, key any) (val *any)
93 func mapaccess1_fast64(mapType *byte, hmap map[any]any, key any) (val *any)
94 func mapaccess1_faststr(mapType *byte, hmap map[any]any, key any) (val *any)
95 func mapaccess2(mapType *byte, hmap map[any]any, key *any) (val *any, pres bool)
96 func mapaccess2_fast32(mapType *byte, hmap map[any]any, key any) (val *any, pres bool)
97 func mapaccess2_fast64(mapType *byte, hmap map[any]any, key any) (val *any, pres bool)
98 func mapaccess2_faststr(mapType *byte, hmap map[any]any, key any) (val *any, pres bool)
99 func mapassign1(mapType *byte, hmap map[any]any, key *any, val *any)
100 func mapiterinit(mapType *byte, hmap map[any]any, hiter *any)
101 func mapdelete(mapType *byte, hmap map[any]any, key *any)
102 func mapiternext(hiter *any)
103
104 // *byte is really *runtime.Type
105 func makechan(chanType *byte, hint int64) (hchan chan any)
106 func chanrecv1(chanType *byte, hchan <-chan any, elem *any)
107 func chanrecv2(chanType *byte, hchan <-chan any, elem *any) bool
108 func chansend1(chanType *byte, hchan chan<- any, elem *any)
109 func closechan(hchan any)
110
111 var writeBarrier struct {
112         enabled bool
113         needed  bool
114         cgo     bool
115 }
116
117 func writebarrierptr(dst *any, src any)
118 func writebarrierstring(dst *any, src any)
119 func writebarrierslice(dst *any, src any)
120 func writebarrieriface(dst *any, src any)
121
122 // The unused *byte argument makes sure that src is 2-pointer-aligned,
123 // which is the maximum alignment on NaCl amd64p32
124 // (and possibly on 32-bit systems if we start 64-bit aligning uint64s).
125 // The bitmap in the name tells which words being copied are pointers.
126 func writebarrierfat01(dst *any, _ uintptr, src any)
127 func writebarrierfat10(dst *any, _ uintptr, src any)
128 func writebarrierfat11(dst *any, _ uintptr, src any)
129 func writebarrierfat001(dst *any, _ uintptr, src any)
130 func writebarrierfat010(dst *any, _ uintptr, src any)
131 func writebarrierfat011(dst *any, _ uintptr, src any)
132 func writebarrierfat100(dst *any, _ uintptr, src any)
133 func writebarrierfat101(dst *any, _ uintptr, src any)
134 func writebarrierfat110(dst *any, _ uintptr, src any)
135 func writebarrierfat111(dst *any, _ uintptr, src any)
136 func writebarrierfat0001(dst *any, _ uintptr, src any)
137 func writebarrierfat0010(dst *any, _ uintptr, src any)
138 func writebarrierfat0011(dst *any, _ uintptr, src any)
139 func writebarrierfat0100(dst *any, _ uintptr, src any)
140 func writebarrierfat0101(dst *any, _ uintptr, src any)
141 func writebarrierfat0110(dst *any, _ uintptr, src any)
142 func writebarrierfat0111(dst *any, _ uintptr, src any)
143 func writebarrierfat1000(dst *any, _ uintptr, src any)
144 func writebarrierfat1001(dst *any, _ uintptr, src any)
145 func writebarrierfat1010(dst *any, _ uintptr, src any)
146 func writebarrierfat1011(dst *any, _ uintptr, src any)
147 func writebarrierfat1100(dst *any, _ uintptr, src any)
148 func writebarrierfat1101(dst *any, _ uintptr, src any)
149 func writebarrierfat1110(dst *any, _ uintptr, src any)
150 func writebarrierfat1111(dst *any, _ uintptr, src any)
151
152 // *byte is really *runtime.Type
153 func typedmemmove(typ *byte, dst *any, src *any)
154 func typedmemmove_nostore(typ *byte, dst *any)
155 func typedslicecopy(typ *byte, dst any, src any) int
156
157 func selectnbsend(chanType *byte, hchan chan<- any, elem *any) bool
158 func selectnbrecv(chanType *byte, elem *any, hchan <-chan any) bool
159 func selectnbrecv2(chanType *byte, elem *any, received *bool, hchan <-chan any) bool
160
161 func newselect(sel *byte, selsize int64, size int32)
162 func selectsend(sel *byte, hchan chan<- any, elem *any) (selected bool)
163 func selectrecv(sel *byte, hchan <-chan any, elem *any) (selected bool)
164 func selectrecv2(sel *byte, hchan <-chan any, elem *any, received *bool) (selected bool)
165 func selectdefault(sel *byte) (selected bool)
166 func selectgo(sel *byte)
167 func block()
168
169 func makeslice(typ *byte, nel int64, cap int64) (ary []any)
170 func growslice(typ *byte, old []any, cap int) (ary []any)
171 func growslice_n(typ *byte, old []any, n int) (ary []any)
172 func memmove(to *any, frm *any, length uintptr)
173 func memclr(ptr *byte, length uintptr)
174
175 func memequal(x, y *any, size uintptr) bool
176 func memequal8(x, y *any) bool
177 func memequal16(x, y *any) bool
178 func memequal32(x, y *any) bool
179 func memequal64(x, y *any) bool
180 func memequal128(x, y *any) bool
181
182 // only used on 32-bit
183 func int64div(int64, int64) int64
184 func uint64div(uint64, uint64) uint64
185 func int64mod(int64, int64) int64
186 func uint64mod(uint64, uint64) uint64
187 func float64toint64(float64) int64
188 func float64touint64(float64) uint64
189 func int64tofloat64(int64) float64
190 func uint64tofloat64(uint64) float64
191
192 func complex128div(num complex128, den complex128) (quo complex128)
193
194 // race detection
195 func racefuncenter(uintptr)
196 func racefuncenterfp(*int32)
197 func racefuncexit()
198 func raceread(uintptr)
199 func racewrite(uintptr)
200 func racereadrange(addr, size uintptr)
201 func racewriterange(addr, size uintptr)
202
203 // memory sanitizer
204 func msanread(addr, size uintptr)
205 func msanwrite(addr, size uintptr)