-
Notifications
You must be signed in to change notification settings - Fork 0
/
runtime.clusters
264 lines (239 loc) · 3.84 KB
/
runtime.clusters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
# Cluster definitions for a hypothetical split of the "runtime" package.
# The core cluster. Mostly data types from runtime2.go.
# NOTES:
# - some common utils (add, hex) should be copy/pasted.
# - asminit needs to be broken up.
= runtime/internal/core
g
m
fing
g0
m0
mutex
note
setg
needm
itab
eface
slice
asminit
signote
sigset_none
sigset
sigaltstack
stack
hex
memclr
add
cgomal
ptrSize
_PageShift
funcval
gcstats
uintreg
goos_windows
goos_plan9
lastg
# NB: we must break the edges from lock/unlock to gothrow to
# avoid pulling in a mass of stuff!
= runtime/internal/lock
lock
unlock
# panic, traceback, but also: signals, memory allocation, parts of GC, scheduler
# NB: we must split setsig -> sighandler edge to avoid a huge
# cycle from throw -> dopanic -> dopanic_m -> crash -> setsig ->
# sighandler -> sigprof -> cpuproftick -> MASSES (startm, allocm,
# schedule)
= runtime/internal/throw
gothrow
= runtime/internal/sched
sched
schedt
gosched_m
block
addtimer
= runtime/internal/gc
GC
= runtime/internal/prof
MemProfileRecord
SetBlockProfileRate
SetCPUProfileRate
MemProfile
BlockProfile
ThreadCreateProfile
ReadMemStats
func$mem.1 # init func for sizeof_C_MStats
= runtime/internal/channels
newselect
selectrecv
selectrecv2
selectrecvImpl
chansend1
selectnbsend
selectnbrecv
selectnbrecv2
reflect_chanrecv
chanrecv1
chanrecv2
selectgo
selectDir
= runtime/internal/hash
hash
func$alg.1 # init function for algarray; pulls in random
int64Hash
stringHash
efaceHash
int32Hash
bytesHash
ifaceHash
= runtime/internal/heapdump
writeHeapDump
dumpfd
dumpotherroot
= runtime/internal/maps
hmap
bmap
hiter
mapaccess1_fast32
mapaccess2_fast32
mapaccess1_fast64
mapaccess2_fast64
mapaccess1_faststr
mapaccess2_faststr
mapaccess1
mapaccess2
mapaccessK
mapiterinit
reflect_mapiternext
makemap
mapassign1
mapdelete
= runtime/internal/netpoll
netpollarm
netpollblockcommit
netpollblock
netpollcheckerr
netpollclose
netpollClose
netpollDeadline
netpolldeadlineimpl
netpollinit
netpollopen
netpollOpen
netpollReadDeadline
netpollReset
netpollServerInit
netpollSetDeadline
netpollUnblock
netpollWaitCanceled
netpollWait
netpollWriteDeadline
= runtime/internal/ifacestuff
convI2I
convT2E
convT2I
convI2E
assertI2T
assertI2T2
assertI2TOK
assertE2T
assertE2T2
assertE2TOK
assertI2E
assertI2E2
assertI2I
assertI2I2
assertE2I
assertE2I2
assertE2E
assertE2E2
= runtime/internal/vdso
args
= runtime/internal/printf
printf
snprintf
= runtime/internal/strings
concatstring2
concatstring3
concatstring4
concatstring5
gostring
= runtime/internal/fp # (totally disconnected)
fsub64
fadd64c
fneg64c
f32to64
fintto64
fdiv64
fmul64
f64toint
f64to32
sqrt
posinf
isnan
= runtime/internal/schedinit # another tangle in its own right...
schedinit
= runtime/internal/finalize
SetFinalizer
= runtime/internal/cgo
cmalloc
cfree
cgocallbackg
weak_cgo_allocate
= runtime/internal/sync
syncsemacquire
syncsemrelease
syncsemcheck
= runtime/internal/check # runtime assertions
check
= runtime/internal/stackwb
writebarrierptr
writebarrierptr_nostore
writebarrierstring
writebarrierslice
writebarrieriface
writebarrierfat
writebarriercopy
writebarrierfat01
writebarrierfat10
writebarrierfat11
writebarrierfat001
writebarrierfat010
writebarrierfat011
writebarrierfat100
writebarrierfat101
writebarrierfat110
writebarrierfat111
writebarrierfat0001
writebarrierfat0010
writebarrierfat0011
writebarrierfat0100
writebarrierfat0101
writebarrierfat0110
writebarrierfat0111
writebarrierfat1000
writebarrierfat1001
writebarrierfat1010
writebarrierfat1011
writebarrierfat1100
writebarrierfat1101
writebarrierfat1110
writebarrierfat1111
= runtime/internal/defers
Goexit
deferreturn
gopanic
func$panic.1 # init of _defer
= runtime/internal/seq # string and slice alloc stuff
makeslice
growslice
slicebytetostringtmp
slicebytetostring
slicecopy
slicestringcopy
slicerunetostring
intstring
gostringw
stringiter
rawruneslice
stringiter2