github.com/Filosottile/go@v0.0.0-20170906193555-dbed9972d994/src/cmd/compile/internal/gc/builtin/runtime.go (about) 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 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 panicindex() 19 func panicslice() 20 func panicdivide() 21 func throwinit() 22 func panicwrap() 23 24 func gopanic(interface{}) 25 func gorecover(*int32) interface{} 26 func goschedguarded() 27 28 func printbool(bool) 29 func printfloat(float64) 30 func printint(int64) 31 func printhex(uint64) 32 func printuint(uint64) 33 func printcomplex(complex128) 34 func printstring(string) 35 func printpointer(any) 36 func printiface(any) 37 func printeface(any) 38 func printslice(any) 39 func printnl() 40 func printsp() 41 func printlock() 42 func printunlock() 43 44 func concatstring2(*[32]byte, string, string) string 45 func concatstring3(*[32]byte, string, string, string) string 46 func concatstring4(*[32]byte, string, string, string, string) string 47 func concatstring5(*[32]byte, string, string, string, string, string) string 48 func concatstrings(*[32]byte, []string) string 49 50 func cmpstring(string, string) int 51 func intstring(*[4]byte, int64) string 52 func slicebytetostring(*[32]byte, []byte) string 53 func slicebytetostringtmp([]byte) string 54 func slicerunetostring(*[32]byte, []rune) string 55 func stringtoslicebyte(*[32]byte, string) []byte 56 func stringtoslicerune(*[32]rune, string) []rune 57 func decoderune(string, int) (retv rune, retk int) 58 func slicecopy(to any, fr any, wid uintptr) int 59 func slicestringcopy(to any, fr any) int 60 61 // interface conversions 62 func convI2I(typ *byte, elem any) (ret any) 63 64 func convT2E(typ *byte, elem *any) (ret any) 65 func convT2E16(typ *byte, elem *any) (ret any) 66 func convT2E32(typ *byte, elem *any) (ret any) 67 func convT2E64(typ *byte, elem *any) (ret any) 68 func convT2Estring(typ *byte, elem *any) (ret any) 69 func convT2Eslice(typ *byte, elem *any) (ret any) 70 func convT2Enoptr(typ *byte, elem *any) (ret any) 71 72 func convT2I(tab *byte, elem *any) (ret any) 73 func convT2I16(tab *byte, elem *any) (ret any) 74 func convT2I32(tab *byte, elem *any) (ret any) 75 func convT2I64(tab *byte, elem *any) (ret any) 76 func convT2Istring(tab *byte, elem *any) (ret any) 77 func convT2Islice(tab *byte, elem *any) (ret any) 78 func convT2Inoptr(tab *byte, elem *any) (ret any) 79 80 // interface type assertions x.(T) 81 func assertE2I(typ *byte, iface any) (ret any) 82 func assertE2I2(typ *byte, iface any) (ret any, b bool) 83 func assertI2I(typ *byte, iface any) (ret any) 84 func assertI2I2(typ *byte, iface any) (ret any, b bool) 85 func panicdottypeE(have, want, iface *byte) 86 func panicdottypeI(have, want, iface *byte) 87 func panicnildottype(want *byte) 88 89 // interface equality. Type/itab pointers are already known to be equal, so 90 // we only need to pass one. 91 func ifaceeq(tab *uintptr, x, y unsafe.Pointer) (ret bool) 92 func efaceeq(typ *uintptr, x, y unsafe.Pointer) (ret bool) 93 94 // *byte is really *runtime.Type 95 func makemap64(mapType *byte, hint int64, mapbuf *any) (hmap map[any]any) 96 func makemap(mapType *byte, hint int, mapbuf *any) (hmap map[any]any) 97 func mapaccess1(mapType *byte, hmap map[any]any, key *any) (val *any) 98 func mapaccess1_fast32(mapType *byte, hmap map[any]any, key any) (val *any) 99 func mapaccess1_fast64(mapType *byte, hmap map[any]any, key any) (val *any) 100 func mapaccess1_faststr(mapType *byte, hmap map[any]any, key any) (val *any) 101 func mapaccess1_fat(mapType *byte, hmap map[any]any, key *any, zero *byte) (val *any) 102 func mapaccess2(mapType *byte, hmap map[any]any, key *any) (val *any, pres bool) 103 func mapaccess2_fast32(mapType *byte, hmap map[any]any, key any) (val *any, pres bool) 104 func mapaccess2_fast64(mapType *byte, hmap map[any]any, key any) (val *any, pres bool) 105 func mapaccess2_faststr(mapType *byte, hmap map[any]any, key any) (val *any, pres bool) 106 func mapaccess2_fat(mapType *byte, hmap map[any]any, key *any, zero *byte) (val *any, pres bool) 107 func mapassign(mapType *byte, hmap map[any]any, key *any) (val *any) 108 func mapassign_fast32(mapType *byte, hmap map[any]any, key any) (val *any) 109 func mapassign_fast64(mapType *byte, hmap map[any]any, key any) (val *any) 110 func mapassign_faststr(mapType *byte, hmap map[any]any, key any) (val *any) 111 func mapiterinit(mapType *byte, hmap map[any]any, hiter *any) 112 func mapdelete(mapType *byte, hmap map[any]any, key *any) 113 func mapdelete_fast32(mapType *byte, hmap map[any]any, key any) 114 func mapdelete_fast64(mapType *byte, hmap map[any]any, key any) 115 func mapdelete_faststr(mapType *byte, hmap map[any]any, key any) 116 func mapiternext(hiter *any) 117 118 // *byte is really *runtime.Type 119 func makechan64(chanType *byte, size int64) (hchan chan any) 120 func makechan(chanType *byte, size int) (hchan chan any) 121 func chanrecv1(hchan <-chan any, elem *any) 122 func chanrecv2(hchan <-chan any, elem *any) bool 123 func chansend1(hchan chan<- any, elem *any) 124 func closechan(hchan any) 125 126 var writeBarrier struct { 127 enabled bool 128 pad [3]byte 129 needed bool 130 cgo bool 131 alignme uint64 132 } 133 134 func writebarrierptr(dst *any, src any) 135 136 // *byte is really *runtime.Type 137 func typedmemmove(typ *byte, dst *any, src *any) 138 func typedmemclr(typ *byte, dst *any) 139 func typedslicecopy(typ *byte, dst any, src any) int 140 141 func selectnbsend(hchan chan<- any, elem *any) bool 142 func selectnbrecv(elem *any, hchan <-chan any) bool 143 func selectnbrecv2(elem *any, received *bool, hchan <-chan any) bool 144 145 func newselect(sel *byte, selsize int64, size int32) 146 func selectsend(sel *byte, hchan chan<- any, elem *any) 147 func selectrecv(sel *byte, hchan <-chan any, elem *any, received *bool) 148 func selectdefault(sel *byte) 149 func selectgo(sel *byte) int 150 func block() 151 152 func makeslice(typ *byte, len int, cap int) (ary []any) 153 func makeslice64(typ *byte, len int64, cap int64) (ary []any) 154 func growslice(typ *byte, old []any, cap int) (ary []any) 155 func memmove(to *any, frm *any, length uintptr) 156 func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr) 157 func memclrHasPointers(ptr unsafe.Pointer, n uintptr) 158 159 func memequal(x, y *any, size uintptr) bool 160 func memequal8(x, y *any) bool 161 func memequal16(x, y *any) bool 162 func memequal32(x, y *any) bool 163 func memequal64(x, y *any) bool 164 func memequal128(x, y *any) bool 165 166 // only used on 32-bit 167 func int64div(int64, int64) int64 168 func uint64div(uint64, uint64) uint64 169 func int64mod(int64, int64) int64 170 func uint64mod(uint64, uint64) uint64 171 func float64toint64(float64) int64 172 func float64touint64(float64) uint64 173 func float64touint32(float64) uint32 174 func int64tofloat64(int64) float64 175 func uint64tofloat64(uint64) float64 176 func uint32tofloat64(uint32) float64 177 178 func complex128div(num complex128, den complex128) (quo complex128) 179 180 // race detection 181 func racefuncenter(uintptr) 182 func racefuncexit() 183 func raceread(uintptr) 184 func racewrite(uintptr) 185 func racereadrange(addr, size uintptr) 186 func racewriterange(addr, size uintptr) 187 188 // memory sanitizer 189 func msanread(addr, size uintptr) 190 func msanwrite(addr, size uintptr) 191 192 // architecture variants 193 var support_popcnt bool