...

Source file src/cmd/compile/internal/typecheck/_builtin/runtime.go

Documentation: cmd/compile/internal/typecheck/_builtin

     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  // panic for iteration after exit in range func
   120  func panicrangeexit()
   121  
   122  // defer in range over func
   123  func deferrangefunc() interface{}
   124  
   125  func rand32() uint32
   126  
   127  // *byte is really *runtime.Type
   128  func makemap64(mapType *byte, hint int64, mapbuf *any) (hmap map[any]any)
   129  func makemap(mapType *byte, hint int, mapbuf *any) (hmap map[any]any)
   130  func makemap_small() (hmap map[any]any)
   131  func mapaccess1(mapType *byte, hmap map[any]any, key *any) (val *any)
   132  func mapaccess1_fast32(mapType *byte, hmap map[any]any, key uint32) (val *any)
   133  func mapaccess1_fast64(mapType *byte, hmap map[any]any, key uint64) (val *any)
   134  func mapaccess1_faststr(mapType *byte, hmap map[any]any, key string) (val *any)
   135  func mapaccess1_fat(mapType *byte, hmap map[any]any, key *any, zero *byte) (val *any)
   136  func mapaccess2(mapType *byte, hmap map[any]any, key *any) (val *any, pres bool)
   137  func mapaccess2_fast32(mapType *byte, hmap map[any]any, key uint32) (val *any, pres bool)
   138  func mapaccess2_fast64(mapType *byte, hmap map[any]any, key uint64) (val *any, pres bool)
   139  func mapaccess2_faststr(mapType *byte, hmap map[any]any, key string) (val *any, pres bool)
   140  func mapaccess2_fat(mapType *byte, hmap map[any]any, key *any, zero *byte) (val *any, pres bool)
   141  func mapassign(mapType *byte, hmap map[any]any, key *any) (val *any)
   142  func mapassign_fast32(mapType *byte, hmap map[any]any, key uint32) (val *any)
   143  func mapassign_fast32ptr(mapType *byte, hmap map[any]any, key unsafe.Pointer) (val *any)
   144  func mapassign_fast64(mapType *byte, hmap map[any]any, key uint64) (val *any)
   145  func mapassign_fast64ptr(mapType *byte, hmap map[any]any, key unsafe.Pointer) (val *any)
   146  func mapassign_faststr(mapType *byte, hmap map[any]any, key string) (val *any)
   147  func mapiterinit(mapType *byte, hmap map[any]any, hiter *any)
   148  func mapdelete(mapType *byte, hmap map[any]any, key *any)
   149  func mapdelete_fast32(mapType *byte, hmap map[any]any, key uint32)
   150  func mapdelete_fast64(mapType *byte, hmap map[any]any, key uint64)
   151  func mapdelete_faststr(mapType *byte, hmap map[any]any, key string)
   152  func mapiternext(hiter *any)
   153  func mapclear(mapType *byte, hmap map[any]any)
   154  
   155  // *byte is really *runtime.Type
   156  func makechan64(chanType *byte, size int64) (hchan chan any)
   157  func makechan(chanType *byte, size int) (hchan chan any)
   158  func chanrecv1(hchan <-chan any, elem *any)
   159  func chanrecv2(hchan <-chan any, elem *any) bool
   160  func chansend1(hchan chan<- any, elem *any)
   161  func closechan(hchan any)
   162  
   163  var writeBarrier struct {
   164  	enabled bool
   165  	pad     [3]byte
   166  	cgo     bool
   167  	alignme uint64
   168  }
   169  
   170  // *byte is really *runtime.Type
   171  func typedmemmove(typ *byte, dst *any, src *any)
   172  func typedmemclr(typ *byte, dst *any)
   173  func typedslicecopy(typ *byte, dstPtr *any, dstLen int, srcPtr *any, srcLen int) int
   174  
   175  func selectnbsend(hchan chan<- any, elem *any) bool
   176  func selectnbrecv(elem *any, hchan <-chan any) (bool, bool)
   177  
   178  func selectsetpc(pc *uintptr)
   179  func selectgo(cas0 *byte, order0 *byte, pc0 *uintptr, nsends int, nrecvs int, block bool) (int, bool)
   180  func block()
   181  
   182  func makeslice(typ *byte, len int, cap int) unsafe.Pointer
   183  func makeslice64(typ *byte, len int64, cap int64) unsafe.Pointer
   184  func makeslicecopy(typ *byte, tolen int, fromlen int, from unsafe.Pointer) unsafe.Pointer
   185  func growslice(oldPtr *any, newLen, oldCap, num int, et *byte) (ary []any)
   186  func unsafeslicecheckptr(typ *byte, ptr unsafe.Pointer, len int64)
   187  func panicunsafeslicelen()
   188  func panicunsafeslicenilptr()
   189  func unsafestringcheckptr(ptr unsafe.Pointer, len int64)
   190  func panicunsafestringlen()
   191  func panicunsafestringnilptr()
   192  
   193  func memmove(to *any, frm *any, length uintptr)
   194  func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr)
   195  func memclrHasPointers(ptr unsafe.Pointer, n uintptr)
   196  
   197  func memequal(x, y *any, size uintptr) bool
   198  func memequal0(x, y *any) bool
   199  func memequal8(x, y *any) bool
   200  func memequal16(x, y *any) bool
   201  func memequal32(x, y *any) bool
   202  func memequal64(x, y *any) bool
   203  func memequal128(x, y *any) bool
   204  func f32equal(p, q unsafe.Pointer) bool
   205  func f64equal(p, q unsafe.Pointer) bool
   206  func c64equal(p, q unsafe.Pointer) bool
   207  func c128equal(p, q unsafe.Pointer) bool
   208  func strequal(p, q unsafe.Pointer) bool
   209  func interequal(p, q unsafe.Pointer) bool
   210  func nilinterequal(p, q unsafe.Pointer) bool
   211  
   212  func memhash(x *any, h uintptr, size uintptr) uintptr
   213  func memhash0(p unsafe.Pointer, h uintptr) uintptr
   214  func memhash8(p unsafe.Pointer, h uintptr) uintptr
   215  func memhash16(p unsafe.Pointer, h uintptr) uintptr
   216  func memhash32(p unsafe.Pointer, h uintptr) uintptr
   217  func memhash64(p unsafe.Pointer, h uintptr) uintptr
   218  func memhash128(p unsafe.Pointer, h uintptr) uintptr
   219  func f32hash(p *any, h uintptr) uintptr
   220  func f64hash(p *any, h uintptr) uintptr
   221  func c64hash(p *any, h uintptr) uintptr
   222  func c128hash(p *any, h uintptr) uintptr
   223  func strhash(a *any, h uintptr) uintptr
   224  func interhash(p *any, h uintptr) uintptr
   225  func nilinterhash(p *any, h uintptr) uintptr
   226  
   227  // only used on 32-bit
   228  func int64div(int64, int64) int64
   229  func uint64div(uint64, uint64) uint64
   230  func int64mod(int64, int64) int64
   231  func uint64mod(uint64, uint64) uint64
   232  func float64toint64(float64) int64
   233  func float64touint64(float64) uint64
   234  func float64touint32(float64) uint32
   235  func int64tofloat64(int64) float64
   236  func int64tofloat32(int64) float32
   237  func uint64tofloat64(uint64) float64
   238  func uint64tofloat32(uint64) float32
   239  func uint32tofloat64(uint32) float64
   240  
   241  func complex128div(num complex128, den complex128) (quo complex128)
   242  
   243  func getcallerpc() uintptr
   244  func getcallersp() uintptr
   245  
   246  // race detection
   247  func racefuncenter(uintptr)
   248  func racefuncexit()
   249  func raceread(uintptr)
   250  func racewrite(uintptr)
   251  func racereadrange(addr, size uintptr)
   252  func racewriterange(addr, size uintptr)
   253  
   254  // memory sanitizer
   255  func msanread(addr, size uintptr)
   256  func msanwrite(addr, size uintptr)
   257  func msanmove(dst, src, size uintptr)
   258  
   259  // address sanitizer
   260  func asanread(addr, size uintptr)
   261  func asanwrite(addr, size uintptr)
   262  
   263  func checkptrAlignment(unsafe.Pointer, *byte, uintptr)
   264  func checkptrArithmetic(unsafe.Pointer, []unsafe.Pointer)
   265  
   266  func libfuzzerTraceCmp1(uint8, uint8, uint)
   267  func libfuzzerTraceCmp2(uint16, uint16, uint)
   268  func libfuzzerTraceCmp4(uint32, uint32, uint)
   269  func libfuzzerTraceCmp8(uint64, uint64, uint)
   270  func libfuzzerTraceConstCmp1(uint8, uint8, uint)
   271  func libfuzzerTraceConstCmp2(uint16, uint16, uint)
   272  func libfuzzerTraceConstCmp4(uint32, uint32, uint)
   273  func libfuzzerTraceConstCmp8(uint64, uint64, uint)
   274  func libfuzzerHookStrCmp(string, string, uint)
   275  func libfuzzerHookEqualFold(string, string, uint)
   276  
   277  func addCovMeta(p unsafe.Pointer, len uint32, hash [16]byte, pkpath string, pkgId int, cmode uint8, cgran uint8) uint32
   278  
   279  // architecture variants
   280  var x86HasPOPCNT bool
   281  var x86HasSSE41 bool
   282  var x86HasFMA bool
   283  var armHasVFPv4 bool
   284  var arm64HasATOMICS bool
   285  
   286  func asanregisterglobals(unsafe.Pointer, uintptr)
   287  

View as plain text