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.
5 // Export guts for testing.
18 var Fintto64 = fintto64
19 var F64toint = f64toint
22 func stackguard() (sp, limit uintptr)
24 var Entersyscall = entersyscall
25 var Exitsyscall = exitsyscall
26 var LockedOSThread = lockedOSThread
36 func LFStackPush(head *uint64, node *LFNode) {
37 lfstackpush(head, (*lfnode)(unsafe.Pointer(node)))
40 func LFStackPop(head *uint64) *LFNode {
41 return (*LFNode)(unsafe.Pointer(lfstackpop(head)))
60 func NewParFor(nthrmax uint32) *ParFor {
63 desc = (*ParFor)(unsafe.Pointer(parforalloc(nthrmax)))
68 func ParForSetup(desc *ParFor, nthr, n uint32, ctx *byte, wait bool, body func(*ParFor, uint32)) {
70 parforsetup((*parfor)(unsafe.Pointer(desc)), nthr, n, unsafe.Pointer(ctx), wait,
71 *(*func(*parfor, uint32))(unsafe.Pointer(&body)))
75 func ParForDo(desc *ParFor) {
77 parfordo((*parfor)(unsafe.Pointer(desc)))
81 func ParForIters(desc *ParFor, tid uint32) (uint32, uint32) {
82 desc1 := (*parfor)(unsafe.Pointer(desc))
83 pos := desc_thr_index(desc1, tid).pos
84 return uint32(pos), uint32(pos >> 32)
87 func GCMask(x interface{}) (ret []byte) {
88 e := (*eface)(unsafe.Pointer(&x))
89 s := (*slice)(unsafe.Pointer(&ret))
92 getgcmask(e.data, e._type, &s.array, &len)
99 func RunSchedLocalQueueTest() {
100 systemstack(testSchedLocalQueue)
102 func RunSchedLocalQueueStealTest() {
103 systemstack(testSchedLocalQueueSteal)
106 var HaveGoodHash = haveGoodHash
107 var StringHash = stringHash
108 var BytesHash = bytesHash
109 var Int32Hash = int32Hash
110 var Int64Hash = int64Hash
111 var EfaceHash = efaceHash
112 var IfaceHash = ifaceHash
113 var MemclrBytes = memclrBytes
115 var HashLoad = &hashLoad
118 func GogoBytes() int32 {
119 return _RuntimeGogoBytes
122 // entry point for testing
123 func GostringW(w []uint16) (s string) {
130 var Gostringnocopy = gostringnocopy
131 var Maxstring = &maxstring