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