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