github.com/reiver/go@v0.0.0-20150109200633-1d0c7792f172/src/runtime/export_test.go (about) 1 // Copyright 2010 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 // Export guts for testing. 6 7 package runtime 8 9 import "unsafe" 10 11 var Fadd64 = fadd64 12 var Fsub64 = fsub64 13 var Fmul64 = fmul64 14 var Fdiv64 = fdiv64 15 var F64to32 = f64to32 16 var F32to64 = f32to64 17 var Fcmp64 = fcmp64 18 var Fintto64 = fintto64 19 var F64toint = f64toint 20 21 var Entersyscall = entersyscall 22 var Exitsyscall = exitsyscall 23 var LockedOSThread = lockedOSThread 24 25 type LFNode struct { 26 Next uint64 27 Pushcnt uintptr 28 } 29 30 func LFStackPush(head *uint64, node *LFNode) { 31 lfstackpush(head, (*lfnode)(unsafe.Pointer(node))) 32 } 33 34 func LFStackPop(head *uint64) *LFNode { 35 return (*LFNode)(unsafe.Pointer(lfstackpop(head))) 36 } 37 38 type ParFor struct { 39 body *byte 40 done uint32 41 Nthr uint32 42 nthrmax uint32 43 thrseq uint32 44 Cnt uint32 45 Ctx *byte 46 wait bool 47 } 48 49 func NewParFor(nthrmax uint32) *ParFor { 50 var desc *ParFor 51 systemstack(func() { 52 desc = (*ParFor)(unsafe.Pointer(parforalloc(nthrmax))) 53 }) 54 return desc 55 } 56 57 func ParForSetup(desc *ParFor, nthr, n uint32, ctx *byte, wait bool, body func(*ParFor, uint32)) { 58 systemstack(func() { 59 parforsetup((*parfor)(unsafe.Pointer(desc)), nthr, n, unsafe.Pointer(ctx), wait, 60 *(*func(*parfor, uint32))(unsafe.Pointer(&body))) 61 }) 62 } 63 64 func ParForDo(desc *ParFor) { 65 systemstack(func() { 66 parfordo((*parfor)(unsafe.Pointer(desc))) 67 }) 68 } 69 70 func ParForIters(desc *ParFor, tid uint32) (uint32, uint32) { 71 desc1 := (*parfor)(unsafe.Pointer(desc)) 72 pos := desc_thr_index(desc1, tid).pos 73 return uint32(pos), uint32(pos >> 32) 74 } 75 76 func GCMask(x interface{}) (ret []byte) { 77 e := (*eface)(unsafe.Pointer(&x)) 78 s := (*slice)(unsafe.Pointer(&ret)) 79 systemstack(func() { 80 var len uintptr 81 getgcmask(e.data, e._type, &s.array, &len) 82 s.len = uint(len) 83 s.cap = s.len 84 }) 85 return 86 } 87 88 func RunSchedLocalQueueTest() { 89 systemstack(testSchedLocalQueue) 90 } 91 func RunSchedLocalQueueStealTest() { 92 systemstack(testSchedLocalQueueSteal) 93 } 94 95 var StringHash = stringHash 96 var BytesHash = bytesHash 97 var Int32Hash = int32Hash 98 var Int64Hash = int64Hash 99 var EfaceHash = efaceHash 100 var IfaceHash = ifaceHash 101 var MemclrBytes = memclrBytes 102 103 var HashLoad = &hashLoad 104 105 // For testing. 106 func GogoBytes() int32 { 107 return _RuntimeGogoBytes 108 } 109 110 // entry point for testing 111 func GostringW(w []uint16) (s string) { 112 systemstack(func() { 113 s = gostringw(&w[0]) 114 }) 115 return 116 } 117 118 var Gostringnocopy = gostringnocopy 119 var Maxstring = &maxstring 120 121 type Uintreg uintreg