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

View as plain text