github.com/zebozhuang/go@v0.0.0-20200207033046-f8a98f6f5c5d/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 eqstring(string, string) bool 52 func intstring(*[4]byte, int64) string 53 func slicebytetostring(*[32]byte, []byte) string 54 func slicebytetostringtmp([]byte) string 55 func slicerunetostring(*[32]byte, []rune) string 56 func stringtoslicebyte(*[32]byte, string) []byte 57 func stringtoslicerune(*[32]rune, string) []rune 58 func decoderune(string, int) (retv rune, retk int) 59 func slicecopy(to any, fr any, wid uintptr) int 60 func slicestringcopy(to any, fr any) int 61 62 // interface conversions 63 func convI2I(typ *byte, elem any) (ret any) 64 65 func convT2E(typ *byte, elem *any) (ret any) 66 func convT2E16(typ *byte, elem *any) (ret any) 67 func convT2E32(typ *byte, elem *any) (ret any) 68 func convT2E64(typ *byte, elem *any) (ret any) 69 func convT2Estring(typ *byte, elem *any) (ret any) 70 func convT2Eslice(typ *byte, elem *any) (ret any) 71 func convT2Enoptr(typ *byte, elem *any) (ret any) 72 73 func convT2I(tab *byte, elem *any) (ret any) 74 func convT2I16(tab *byte, elem *any) (ret any) 75 func convT2I32(tab *byte, elem *any) (ret any) 76 func convT2I64(tab *byte, elem *any) (ret any) 77 func convT2Istring(tab *byte, elem *any) (ret any) 78 func convT2Islice(tab *byte, elem *any) (ret any) 79 func convT2Inoptr(tab *byte, elem *any) (ret any) 80 81 // interface type assertions x.(T) 82 func assertE2I(typ *byte, iface any) (ret any) 83 func assertE2I2(typ *byte, iface any) (ret any, b bool) 84 func assertI2I(typ *byte, iface any) (ret any) 85 func assertI2I2(typ *byte, iface any) (ret any, b bool) 86 func panicdottypeE(have, want, iface *byte) 87 func panicdottypeI(have, want, iface *byte) 88 func panicnildottype(want *byte) 89 90 // interface equality. Type/itab pointers are already known to be equal, so 91 // we only need to pass one. 92 func ifaceeq(tab *uintptr, x, y unsafe.Pointer) (ret bool) 93 func efaceeq(typ *uintptr, x, y unsafe.Pointer) (ret bool) 94 95 // *byte is really *runtime.Type 96 func makemap(mapType *byte, hint int64, mapbuf *any, bucketbuf *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_fast32ptr(mapType *byte, hmap map[any]any, key any) (val *any) 110 func mapassign_fast64(mapType *byte, hmap map[any]any, key any) (val *any) 111 func mapassign_fast64ptr(mapType *byte, hmap map[any]any, key any) (val *any) 112 func mapassign_faststr(mapType *byte, hmap map[any]any, key any) (val *any) 113 func mapiterinit(mapType *byte, hmap map[any]any, hiter *any) 114 func mapdelete(mapType *byte, hmap map[any]any, key *any) 115 func mapdelete_fast32(mapType *byte, hmap map[any]any, key any) 116 func mapdelete_fast64(mapType *byte, hmap map[any]any, key any) 117 func mapdelete_faststr(mapType *byte, hmap map[any]any, key any) 118 func mapiternext(hiter *any) 119 120 // *byte is really *runtime.Type 121 func makechan(chanType *byte, hint int64) (hchan chan any) 122 func chanrecv1(hchan <-chan any, elem *any) 123 func chanrecv2(hchan <-chan any, elem *any) bool 124 func chansend1(hchan chan<- any, elem *any) 125 func closechan(hchan any) 126 127 var writeBarrier struct { 128 enabled bool 129 pad [3]byte 130 needed bool 131 cgo bool 132 alignme uint64 133 } 134 135 func writebarrierptr(dst *any, src any) 136 137 // *byte is really *runtime.Type 138 func typedmemmove(typ *byte, dst *any, src *any) 139 func typedmemclr(typ *byte, dst *any) 140 func typedslicecopy(typ *byte, dst any, src any) int 141 142 func selectnbsend(hchan chan<- any, elem *any) bool 143 func selectnbrecv(elem *any, hchan <-chan any) bool 144 func selectnbrecv2(elem *any, received *bool, hchan <-chan any) bool 145 146 func newselect(sel *byte, selsize int64, size int32) 147 func selectsend(sel *byte, hchan chan<- any, elem *any) 148 func selectrecv(sel *byte, hchan <-chan any, elem *any, received *bool) 149 func selectdefault(sel *byte) 150 func selectgo(sel *byte) int 151 func block() 152 153 func makeslice(typ *byte, len int, cap int) (ary []any) 154 func makeslice64(typ *byte, len int64, cap int64) (ary []any) 155 func growslice(typ *byte, old []any, cap int) (ary []any) 156 func memmove(to *any, frm *any, length uintptr) 157 func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr) 158 func memclrHasPointers(ptr unsafe.Pointer, n uintptr) 159 160 func memequal(x, y *any, size uintptr) bool 161 func memequal8(x, y *any) bool 162 func memequal16(x, y *any) bool 163 func memequal32(x, y *any) bool 164 func memequal64(x, y *any) bool 165 func memequal128(x, y *any) bool 166 167 // only used on 32-bit 168 func int64div(int64, int64) int64 169 func uint64div(uint64, uint64) uint64 170 func int64mod(int64, int64) int64 171 func uint64mod(uint64, uint64) uint64 172 func float64toint64(float64) int64 173 func float64touint64(float64) uint64 174 func float64touint32(float64) uint32 175 func int64tofloat64(int64) float64 176 func uint64tofloat64(uint64) float64 177 func uint32tofloat64(uint32) float64 178 179 func complex128div(num complex128, den complex128) (quo complex128) 180 181 // race detection 182 func racefuncenter(uintptr) 183 func racefuncexit() 184 func raceread(uintptr) 185 func racewrite(uintptr) 186 func racereadrange(addr, size uintptr) 187 func racewriterange(addr, size uintptr) 188 189 // memory sanitizer 190 func msanread(addr, size uintptr) 191 func msanwrite(addr, size uintptr) 192 193 // architecture variants 194 var support_popcnt bool