github.com/ltltlt/go-source-code@v0.0.0-20190830023027-95be009773aa/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  func fastrand() uint32
    95  
    96  // *byte is really *runtime.Type
    97  func makemap64(mapType *byte, hint int64, mapbuf *any) (hmap map[any]any)
    98  func makemap(mapType *byte, hint int, mapbuf *any) (hmap map[any]any)
    99  func makemap_small() (hmap map[any]any)
   100  func mapaccess1(mapType *byte, hmap map[any]any, key *any) (val *any)
   101  func mapaccess1_fast32(mapType *byte, hmap map[any]any, key any) (val *any)
   102  func mapaccess1_fast64(mapType *byte, hmap map[any]any, key any) (val *any)
   103  func mapaccess1_faststr(mapType *byte, hmap map[any]any, key any) (val *any)
   104  func mapaccess1_fat(mapType *byte, hmap map[any]any, key *any, zero *byte) (val *any)
   105  func mapaccess2(mapType *byte, hmap map[any]any, key *any) (val *any, pres bool)
   106  func mapaccess2_fast32(mapType *byte, hmap map[any]any, key any) (val *any, pres bool)
   107  func mapaccess2_fast64(mapType *byte, hmap map[any]any, key any) (val *any, pres bool)
   108  func mapaccess2_faststr(mapType *byte, hmap map[any]any, key any) (val *any, pres bool)
   109  func mapaccess2_fat(mapType *byte, hmap map[any]any, key *any, zero *byte) (val *any, pres bool)
   110  func mapassign(mapType *byte, hmap map[any]any, key *any) (val *any)
   111  func mapassign_fast32(mapType *byte, hmap map[any]any, key any) (val *any)
   112  func mapassign_fast32ptr(mapType *byte, hmap map[any]any, key any) (val *any)
   113  func mapassign_fast64(mapType *byte, hmap map[any]any, key any) (val *any)
   114  func mapassign_fast64ptr(mapType *byte, hmap map[any]any, key any) (val *any)
   115  func mapassign_faststr(mapType *byte, hmap map[any]any, key any) (val *any)
   116  func mapiterinit(mapType *byte, hmap map[any]any, hiter *any)
   117  func mapdelete(mapType *byte, hmap map[any]any, key *any)
   118  func mapdelete_fast32(mapType *byte, hmap map[any]any, key any)
   119  func mapdelete_fast64(mapType *byte, hmap map[any]any, key any)
   120  func mapdelete_faststr(mapType *byte, hmap map[any]any, key any)
   121  func mapiternext(hiter *any)
   122  
   123  // *byte is really *runtime.Type
   124  func makechan64(chanType *byte, size int64) (hchan chan any)
   125  func makechan(chanType *byte, size int) (hchan chan any)
   126  func chanrecv1(hchan <-chan any, elem *any)
   127  func chanrecv2(hchan <-chan any, elem *any) bool
   128  func chansend1(hchan chan<- any, elem *any)
   129  func closechan(hchan any)
   130  
   131  var writeBarrier struct {
   132  	enabled bool
   133  	pad     [3]byte
   134  	needed  bool
   135  	cgo     bool
   136  	alignme uint64
   137  }
   138  
   139  func writebarrierptr(dst *any, src any)
   140  
   141  // *byte is really *runtime.Type
   142  func typedmemmove(typ *byte, dst *any, src *any)
   143  func typedmemclr(typ *byte, dst *any)
   144  func typedslicecopy(typ *byte, dst any, src any) int
   145  
   146  func selectnbsend(hchan chan<- any, elem *any) bool
   147  func selectnbrecv(elem *any, hchan <-chan any) bool
   148  func selectnbrecv2(elem *any, received *bool, hchan <-chan any) bool
   149  
   150  func newselect(sel *byte, selsize int64, size int32)
   151  func selectsend(sel *byte, hchan chan<- any, elem *any)
   152  func selectrecv(sel *byte, hchan <-chan any, elem *any, received *bool)
   153  func selectdefault(sel *byte)
   154  func selectgo(sel *byte) int
   155  func block()
   156  
   157  func makeslice(typ *byte, len int, cap int) (ary []any)
   158  func makeslice64(typ *byte, len int64, cap int64) (ary []any)
   159  func growslice(typ *byte, old []any, cap int) (ary []any)
   160  func memmove(to *any, frm *any, length uintptr)
   161  func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr)
   162  func memclrHasPointers(ptr unsafe.Pointer, n uintptr)
   163  
   164  func memequal(x, y *any, size uintptr) bool
   165  func memequal8(x, y *any) bool
   166  func memequal16(x, y *any) bool
   167  func memequal32(x, y *any) bool
   168  func memequal64(x, y *any) bool
   169  func memequal128(x, y *any) bool
   170  
   171  // only used on 32-bit
   172  func int64div(int64, int64) int64
   173  func uint64div(uint64, uint64) uint64
   174  func int64mod(int64, int64) int64
   175  func uint64mod(uint64, uint64) uint64
   176  func float64toint64(float64) int64
   177  func float64touint64(float64) uint64
   178  func float64touint32(float64) uint32
   179  func int64tofloat64(int64) float64
   180  func uint64tofloat64(uint64) float64
   181  func uint32tofloat64(uint32) float64
   182  
   183  func complex128div(num complex128, den complex128) (quo complex128)
   184  
   185  // race detection
   186  func racefuncenter(uintptr)
   187  func racefuncexit()
   188  func raceread(uintptr)
   189  func racewrite(uintptr)
   190  func racereadrange(addr, size uintptr)
   191  func racewriterange(addr, size uintptr)
   192  
   193  // memory sanitizer
   194  func msanread(addr, size uintptr)
   195  func msanwrite(addr, size uintptr)
   196  
   197  // architecture variants
   198  var support_popcnt bool
   199  var support_sse41 bool