/home/travis/build/MoarVM/MoarVM/src/core/instance.h
Line | Count | Source |
1 | | /* The various "bootstrap" types, based straight off of some core |
2 | | * representations. They are used during the 6model bootstrap. */ |
3 | | struct MVMBootTypes { |
4 | | MVMObject *BOOTInt; |
5 | | MVMObject *BOOTNum; |
6 | | MVMObject *BOOTStr; |
7 | | MVMObject *BOOTArray; |
8 | | MVMObject *BOOTHash; |
9 | | MVMObject *BOOTCCode; |
10 | | MVMObject *BOOTCode; |
11 | | MVMObject *BOOTThread; |
12 | | MVMObject *BOOTIter; |
13 | | MVMObject *BOOTContext; |
14 | | MVMObject *BOOTIntArray; |
15 | | MVMObject *BOOTNumArray; |
16 | | MVMObject *BOOTStrArray; |
17 | | MVMObject *BOOTIO; |
18 | | MVMObject *BOOTException; |
19 | | MVMObject *BOOTStaticFrame; |
20 | | MVMObject *BOOTCompUnit; |
21 | | MVMObject *BOOTMultiCache; |
22 | | MVMObject *BOOTContinuation; |
23 | | MVMObject *BOOTQueue; |
24 | | MVMObject *BOOTAsync; |
25 | | MVMObject *BOOTReentrantMutex; |
26 | | }; |
27 | | |
28 | | /* Various raw types that don't need a HOW */ |
29 | | typedef struct { |
30 | | MVMObject *RawDLLSym; |
31 | | } MVMRawTypes; |
32 | | |
33 | | /* Various common string constants. */ |
34 | | struct MVMStringConsts { |
35 | | MVMString *empty; |
36 | | MVMString *Str; |
37 | | MVMString *Num; |
38 | | MVMString *integer; |
39 | | MVMString *float_str; |
40 | | MVMString *bits; |
41 | | MVMString *unsigned_str; |
42 | | MVMString *find_method; |
43 | | MVMString *type_check; |
44 | | MVMString *accepts_type; |
45 | | MVMString *name; |
46 | | MVMString *attribute; |
47 | | MVMString *of; |
48 | | MVMString *rw; |
49 | | MVMString *type; |
50 | | MVMString *typeobj; |
51 | | MVMString *free_str; |
52 | | MVMString *callback_args; |
53 | | MVMString *encoding; |
54 | | MVMString *inlined; |
55 | | MVMString *repr; |
56 | | MVMString *anon; |
57 | | MVMString *P6opaque; |
58 | | MVMString *array; |
59 | | MVMString *box_target; |
60 | | MVMString *positional_delegate; |
61 | | MVMString *associative_delegate; |
62 | | MVMString *auto_viv_container; |
63 | | MVMString *done; |
64 | | MVMString *error; |
65 | | MVMString *stdout_chars; |
66 | | MVMString *stdout_bytes; |
67 | | MVMString *stderr_chars; |
68 | | MVMString *stderr_bytes; |
69 | | MVMString *buf_type; |
70 | | MVMString *write; |
71 | | MVMString *nativeref; |
72 | | MVMString *refkind; |
73 | | MVMString *positional; |
74 | | MVMString *lexical; |
75 | | MVMString *dimensions; |
76 | | MVMString *ready; |
77 | | MVMString *multidim; |
78 | | MVMString *entry_point; |
79 | | MVMString *kind; |
80 | | MVMString *instrumented; |
81 | | MVMString *heap; |
82 | | MVMString *translate_newlines; |
83 | | }; |
84 | | |
85 | | /* An entry in the representations registry. */ |
86 | | struct MVMReprRegistry { |
87 | | /* name of the REPR */ |
88 | | MVMString *name; |
89 | | |
90 | | /* the REPR vtable */ |
91 | | const MVMREPROps *repr; |
92 | | |
93 | | /* the uthash hash handle inline struct. */ |
94 | | UT_hash_handle hash_handle; |
95 | | }; |
96 | | |
97 | | /* An entry in the persistent object IDs hash, used to give still-movable |
98 | | * objects a lifetime-unique ID. */ |
99 | | struct MVMObjectId { |
100 | | /* The current object address. */ |
101 | | MVMObject *current; |
102 | | |
103 | | /* Then gen2 address that forms the persistent ID, and where we'll move |
104 | | * the object to if it lives long enough. */ |
105 | | MVMCollectable *gen2_addr; |
106 | | |
107 | | /* Hash handle. */ |
108 | | UT_hash_handle hash_handle; |
109 | | }; |
110 | | |
111 | | /* Represents a MoarVM instance. */ |
112 | | struct MVMInstance { |
113 | | /* The main thread. */ |
114 | | MVMThreadContext *main_thread; |
115 | | |
116 | | /* The ID to allocate the next-created thread. */ |
117 | | AO_t next_user_thread_id; |
118 | | |
119 | | /* The event loop thread, a mutex to avoid start-races, a concurrent |
120 | | * queue of tasks that need to be processed by the event loop thread |
121 | | * and an array of active tasks, for the purpose of keeping them GC |
122 | | * marked. */ |
123 | | MVMThreadContext *event_loop_thread; |
124 | | uv_mutex_t mutex_event_loop_start; |
125 | | uv_sem_t sem_event_loop_started; |
126 | | MVMObject *event_loop_todo_queue; |
127 | | MVMObject *event_loop_cancel_queue; |
128 | | MVMObject *event_loop_active; |
129 | | uv_async_t *event_loop_wakeup; |
130 | | |
131 | | /* The VM null object. */ |
132 | | MVMObject *VMNull; |
133 | | |
134 | | /* The KnowHOW meta-object; all other meta-objects (which are |
135 | | * built in user-space) are built out of this. */ |
136 | | MVMObject *KnowHOW; |
137 | | |
138 | | /* The KnowHOWAttribute meta-object; used for declaring attributes |
139 | | * on a KnowHOW. */ |
140 | | MVMObject *KnowHOWAttribute; |
141 | | |
142 | | /* The VM's native string type, using MVMString. Note that this is a |
143 | | * native string, not an object boxing one. */ |
144 | | MVMObject *VMString; |
145 | | |
146 | | /* Serialization context type (known as SCRef, but it's actually the |
147 | | * serialization context itself). */ |
148 | | MVMObject *SCRef; |
149 | | |
150 | | /* Lexotic type, used in implementing return handling. */ |
151 | | MVMObject *Lexotic; |
152 | | |
153 | | /* CallCapture type, used by custom dispatchers. */ |
154 | | MVMObject *CallCapture; |
155 | | |
156 | | /* Thread type, representing a VM-level thread. */ |
157 | | MVMObject *Thread; |
158 | | |
159 | | /* Set of bootstrapping types. */ |
160 | | MVMBootTypes boot_types; |
161 | | |
162 | | /* Set of raw types. */ |
163 | | MVMRawTypes raw_types; |
164 | | |
165 | | /* Set of string constants. */ |
166 | | MVMStringConsts str_consts; |
167 | | |
168 | | /* int -> str cache */ |
169 | | MVMString **int_to_str_cache; |
170 | | |
171 | | /* Multi-dispatch cache and specialization installation mutexes |
172 | | * (global, as the additions are quite low contention, so no |
173 | | * real motivation to have it more fine-grained at present). */ |
174 | | uv_mutex_t mutex_multi_cache_add; |
175 | | uv_mutex_t mutex_spesh_install; |
176 | | |
177 | | /* Log file for specializations, if we're to log them. */ |
178 | | FILE *spesh_log_fh; |
179 | | |
180 | | /* Log file for dynamic var performance, if we're to log it. */ |
181 | | FILE *dynvar_log_fh; |
182 | | MVMint64 dynvar_log_lasttime; |
183 | | |
184 | | /* Flag for if spesh (and certain spesh features) are enabled. */ |
185 | | MVMint8 spesh_enabled; |
186 | | MVMint8 spesh_inline_enabled; |
187 | | MVMint8 spesh_osr_enabled; |
188 | | MVMint8 spesh_nodelay; |
189 | | |
190 | | /* Number of specializations produced, and limit on number of |
191 | | * specializations (zero if no limit). */ |
192 | | MVMint32 spesh_produced; |
193 | | MVMint32 spesh_limit; |
194 | | |
195 | | /* Flag for if NFA debugging is enabled. */ |
196 | | MVMint8 nfa_debug_enabled; |
197 | | |
198 | | /* Flag for if jit is enabled */ |
199 | | MVMint32 jit_enabled; |
200 | | |
201 | | /* File for JIT logging */ |
202 | | FILE *jit_log_fh; |
203 | | |
204 | | /* Directory name for JIT bytecode dumps */ |
205 | | char *jit_bytecode_dir; |
206 | | /* File for map of frame information for bytecode dumps */ |
207 | | FILE *jit_bytecode_map; |
208 | | /* sequence number for JIT compiled frames */ |
209 | | AO_t jit_seq_nr; |
210 | | |
211 | | /* Number of representations registered so far. */ |
212 | | MVMuint32 num_reprs; |
213 | | |
214 | | /* An array mapping representation IDs to registry entries. */ |
215 | | MVMReprRegistry **repr_list; |
216 | | |
217 | | /* A hash mapping representation names to registry entries. */ |
218 | | MVMReprRegistry *repr_hash; |
219 | | |
220 | | /* Mutex for REPR registration. */ |
221 | | uv_mutex_t mutex_repr_registry; |
222 | | |
223 | | /* Number of permanent GC roots we've got, allocated space for, and |
224 | | * a list of the addresses to them. The mutex controls writing to the |
225 | | * list, just in case multiple threads somehow end up doing so. Note |
226 | | * that during a GC the world is stopped so reading is safe. We also |
227 | | * keep a list of names for these, for the purpose of heap debugging |
228 | | * and heap profiling. */ |
229 | | MVMuint32 num_permroots; |
230 | | MVMuint32 alloc_permroots; |
231 | | MVMCollectable ***permroots; |
232 | | char **permroot_descriptions; |
233 | | uv_mutex_t mutex_permroots; |
234 | | |
235 | | /* The current GC run sequence number. May wrap around over time; that |
236 | | * is fine since only equality ever matters. */ |
237 | | AO_t gc_seq_number; |
238 | | /* The number of threads that vote for starting GC. */ |
239 | | AO_t gc_start; |
240 | | /* The number of threads that still need to vote for considering GC done. */ |
241 | | AO_t gc_finish; |
242 | | /* Whether the coordinator considers all in-trays clear. */ |
243 | | AO_t gc_intrays_clearing; |
244 | | /* The number of threads that have yet to acknowledge the finish. */ |
245 | | AO_t gc_ack; |
246 | | /* Linked list (via forwarder) of STables to free. */ |
247 | | MVMSTable *stables_to_free; |
248 | | /* Whether the current GC run is a full collection. */ |
249 | | MVMuint32 gc_full_collect; |
250 | | |
251 | | /* How many bytes of data have we promoted from the nursery to gen2 |
252 | | * since we last did a full collection? */ |
253 | | AO_t gc_promoted_bytes_since_last_full; |
254 | | |
255 | | /* Persistent object ID hash, used to give nursery objects a lifetime |
256 | | * unique ID. Plus a lock to protect it. */ |
257 | | MVMObjectId *object_ids; |
258 | | uv_mutex_t mutex_object_ids; |
259 | | |
260 | | /* MVMThreads completed starting, running, and/or exited. */ |
261 | | /* note: used atomically */ |
262 | | MVMThread *threads; |
263 | | |
264 | | /* raw command line args from APR */ |
265 | | char **raw_clargs; |
266 | | /* Number of passed command-line args */ |
267 | | MVMint64 num_clargs; |
268 | | /* executable name */ |
269 | | const char *exec_name; |
270 | | /* program name; becomes first clargs entry */ |
271 | | const char *prog_name; |
272 | | /* cached parsed command line args */ |
273 | | MVMObject *clargs; |
274 | | /* Any --libpath=... options, to prefix in loadbytecode lookups. */ |
275 | | const char *lib_path[8]; |
276 | | |
277 | | /* Hashes of HLLConfig objects. compiler_hll_configs is those for the |
278 | | * running compiler, and the default. compilee_hll_configs is used if |
279 | | * hll_compilee_depth is > 0. */ |
280 | | MVMHLLConfig *compiler_hll_configs; |
281 | | MVMHLLConfig *compilee_hll_configs; |
282 | | MVMint64 hll_compilee_depth; |
283 | | uv_mutex_t mutex_hllconfigs; |
284 | | |
285 | | /* By far the most common integers are between 0 and 8, but we cache up to 15 |
286 | | * so that it lines up properly. */ |
287 | | MVMIntConstCache *int_const_cache; |
288 | | uv_mutex_t mutex_int_const_cache; |
289 | | |
290 | | /* Atomically-incremented counter of newly invoked frames, used for |
291 | | * lexotic caching. */ |
292 | | AO_t num_frames_run; |
293 | | |
294 | | /* Hash of compiler objects keyed by name */ |
295 | | MVMObject *compiler_registry; |
296 | | uv_mutex_t mutex_compiler_registry; |
297 | | |
298 | | /* Hash of hashes of symbol tables per hll. */ |
299 | | MVMObject *hll_syms; |
300 | | uv_mutex_t mutex_hll_syms; |
301 | | |
302 | | MVMContainerRegistry *container_registry; /* Container registry */ |
303 | | uv_mutex_t mutex_container_registry; /* mutex for container registry */ |
304 | | |
305 | | /* Hash of all loaded DLLs. */ |
306 | | MVMDLLRegistry *dll_registry; |
307 | | uv_mutex_t mutex_dll_registry; |
308 | | |
309 | | /* Hash of all loaded extensions. */ |
310 | | MVMExtRegistry *ext_registry; |
311 | | uv_mutex_t mutex_ext_registry; |
312 | | |
313 | | /* Hash of all registered extension ops. */ |
314 | | MVMExtOpRegistry *extop_registry; |
315 | | uv_mutex_t mutex_extop_registry; |
316 | | |
317 | | /* Hash of all known serialization contexts. Marked for GC iff |
318 | | * the item is unresolved. Also, array of all SCs, used for the |
319 | | * index stored in object headers. When an SC goes away this is |
320 | | * simply nulled. That makes it a small memory leak if a lot of |
321 | | * SCs are created and go away over time. */ |
322 | | MVMSerializationContextBody *sc_weakhash; |
323 | | uv_mutex_t mutex_sc_weakhash; |
324 | | MVMSerializationContextBody **all_scs; |
325 | | MVMuint32 all_scs_next_idx; |
326 | | MVMuint32 all_scs_alloc; |
327 | | |
328 | | /* Hash of filenames of compunits loaded from disk. */ |
329 | | MVMLoadedCompUnitName *loaded_compunits; |
330 | | uv_mutex_t mutex_loaded_compunits; |
331 | | |
332 | | /* Interned callsites. */ |
333 | | MVMCallsiteInterns *callsite_interns; |
334 | | uv_mutex_t mutex_callsite_interns; |
335 | | |
336 | | /* Standard file handles. */ |
337 | | MVMObject *stdin_handle; |
338 | | MVMObject *stdout_handle; |
339 | | MVMObject *stderr_handle; |
340 | | |
341 | | /* Fixed size allocator. */ |
342 | | MVMFixedSizeAlloc *fsa; |
343 | | |
344 | | /* Normal Form Grapheme state (synthetics table, lookup, etc.). */ |
345 | | MVMNFGState *nfg; |
346 | | |
347 | | /* Next type cache ID, to go in STable. */ |
348 | | AO_t cur_type_cache_id; |
349 | | |
350 | | /* The current instrumentation level. Each time we turn on/off some kind |
351 | | * of instrumentation, such as profiling, this is incremented. The next |
352 | | * entry to a frame then knows it should instrument or switch back to an |
353 | | * uninstrumented version. As a special case, when we start up this is set |
354 | | * to 1 which also triggers frame verification. */ |
355 | | MVMuint32 instrumentation_level; |
356 | | |
357 | | /* Whether instrumented profiling is turned on or not. */ |
358 | | MVMuint32 profiling; |
359 | | |
360 | | /* Heap snapshots, if we're doing heap snapshotting. */ |
361 | | MVMHeapSnapshotCollection *heap_snapshots; |
362 | | |
363 | | /* Whether cross-thread write logging is turned on or not, and an output |
364 | | * mutex for it. */ |
365 | | MVMuint32 cross_thread_write_logging; |
366 | | MVMuint32 cross_thread_write_logging_include_locked; |
367 | | uv_mutex_t mutex_cross_thread_write_logging; |
368 | | |
369 | | MVMuint32 coverage_logging; |
370 | | /* Log file for coverage logging. */ |
371 | | FILE *coverage_log_fh; |
372 | | |
373 | | /* Cached backend config hash. */ |
374 | | MVMObject *cached_backend_config; |
375 | | }; |
376 | | |
377 | | /* Returns a true value if we have created user threads (and so are running a |
378 | | * multi-threaded application). */ |
379 | 32.1M | MVM_STATIC_INLINE MVMint32 MVM_instance_have_user_threads(MVMThreadContext *tc) { |
380 | 32.1M | return tc->instance->next_user_thread_id != 2; |
381 | 32.1M | } Unexecuted instantiation: NativeRef.c:MVM_instance_have_user_threads Unexecuted instantiation: CUnion.c:MVM_instance_have_user_threads Unexecuted instantiation: ReentrantMutex.c:MVM_instance_have_user_threads Unexecuted instantiation: ConditionVariable.c:MVM_instance_have_user_threads Unexecuted instantiation: Semaphore.c:MVM_instance_have_user_threads Unexecuted instantiation: ConcBlockingQueue.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMAsyncTask.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMNull.c:MVM_instance_have_user_threads Unexecuted instantiation: CPPStruct.c:MVM_instance_have_user_threads Unexecuted instantiation: CStruct.c:MVM_instance_have_user_threads Unexecuted instantiation: MultiDimArray.c:MVM_instance_have_user_threads Unexecuted instantiation: Decoder.c:MVM_instance_have_user_threads Unexecuted instantiation: 6model.c:MVM_instance_have_user_threads Unexecuted instantiation: bootstrap.c:MVM_instance_have_user_threads Unexecuted instantiation: sc.c:MVM_instance_have_user_threads Unexecuted instantiation: serialization.c:MVM_instance_have_user_threads Unexecuted instantiation: compiler.c:MVM_instance_have_user_threads Unexecuted instantiation: driver.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMException.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMThread.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMIter.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMContext.c:MVM_instance_have_user_threads Unexecuted instantiation: SCRef.c:MVM_instance_have_user_threads Unexecuted instantiation: Lexotic.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMCallCapture.c:MVM_instance_have_user_threads Unexecuted instantiation: P6bigint.c:MVM_instance_have_user_threads Unexecuted instantiation: NFA.c:MVM_instance_have_user_threads Unexecuted instantiation: dump.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMDLLSym.c:MVM_instance_have_user_threads MVMMultiCache.c:MVM_instance_have_user_threads Line | Count | Source | 379 | 3.87k | MVM_STATIC_INLINE MVMint32 MVM_instance_have_user_threads(MVMThreadContext *tc) { | 380 | 3.87k | return tc->instance->next_user_thread_id != 2; | 381 | 3.87k | } |
Unexecuted instantiation: MVMContinuation.c:MVM_instance_have_user_threads Unexecuted instantiation: NativeCall.c:MVM_instance_have_user_threads Unexecuted instantiation: CPointer.c:MVM_instance_have_user_threads Unexecuted instantiation: CStr.c:MVM_instance_have_user_threads Unexecuted instantiation: CArray.c:MVM_instance_have_user_threads Unexecuted instantiation: profile.c:MVM_instance_have_user_threads Unexecuted instantiation: nfg.c:MVM_instance_have_user_threads Unexecuted instantiation: unicode.c:MVM_instance_have_user_threads Unexecuted instantiation: normalize.c:MVM_instance_have_user_threads Unexecuted instantiation: latin1.c:MVM_instance_have_user_threads Unexecuted instantiation: utf16.c:MVM_instance_have_user_threads Unexecuted instantiation: windows1252.c:MVM_instance_have_user_threads Unexecuted instantiation: bigintops.c:MVM_instance_have_user_threads Unexecuted instantiation: instrument.c:MVM_instance_have_user_threads Unexecuted instantiation: utf8_c8.c:MVM_instance_have_user_threads Unexecuted instantiation: heapsnapshot.c:MVM_instance_have_user_threads Unexecuted instantiation: crossthreadwrite.c:MVM_instance_have_user_threads Unexecuted instantiation: line_coverage.c:MVM_instance_have_user_threads Unexecuted instantiation: moar.c:MVM_instance_have_user_threads Unexecuted instantiation: mmap.c:MVM_instance_have_user_threads Unexecuted instantiation: time.c:MVM_instance_have_user_threads Unexecuted instantiation: sys.c:MVM_instance_have_user_threads Unexecuted instantiation: emit_posix_x64.c:MVM_instance_have_user_threads Unexecuted instantiation: threshold.c:MVM_instance_have_user_threads Unexecuted instantiation: graph.c:MVM_instance_have_user_threads Unexecuted instantiation: codegen.c:MVM_instance_have_user_threads Unexecuted instantiation: candidate.c:MVM_instance_have_user_threads Unexecuted instantiation: manipulate.c:MVM_instance_have_user_threads Unexecuted instantiation: facts.c:MVM_instance_have_user_threads Unexecuted instantiation: optimize.c:MVM_instance_have_user_threads Unexecuted instantiation: deopt.c:MVM_instance_have_user_threads Unexecuted instantiation: log.c:MVM_instance_have_user_threads Unexecuted instantiation: HashAttrStore.c:MVM_instance_have_user_threads Unexecuted instantiation: inline.c:MVM_instance_have_user_threads Unexecuted instantiation: osr.c:MVM_instance_have_user_threads Unexecuted instantiation: lookup.c:MVM_instance_have_user_threads Unexecuted instantiation: compile.c:MVM_instance_have_user_threads Unexecuted instantiation: decode_stream.c:MVM_instance_have_user_threads Unexecuted instantiation: ascii.c:MVM_instance_have_user_threads Unexecuted instantiation: utf8.c:MVM_instance_have_user_threads Unexecuted instantiation: orchestrate.c:MVM_instance_have_user_threads Unexecuted instantiation: ext.c:MVM_instance_have_user_threads Unexecuted instantiation: nativecall.c:MVM_instance_have_user_threads Unexecuted instantiation: nativecall_dyncall.c:MVM_instance_have_user_threads Unexecuted instantiation: continuation.c:MVM_instance_have_user_threads Unexecuted instantiation: intcache.c:MVM_instance_have_user_threads fixedsizealloc.c:MVM_instance_have_user_threads Line | Count | Source | 379 | 32.1M | MVM_STATIC_INLINE MVMint32 MVM_instance_have_user_threads(MVMThreadContext *tc) { | 380 | 32.1M | return tc->instance->next_user_thread_id != 2; | 381 | 32.1M | } |
Unexecuted instantiation: regionalloc.c:MVM_instance_have_user_threads Unexecuted instantiation: config.c:MVM_instance_have_user_threads Unexecuted instantiation: dll.c:MVM_instance_have_user_threads Unexecuted instantiation: allocation.c:MVM_instance_have_user_threads Unexecuted instantiation: worklist.c:MVM_instance_have_user_threads Unexecuted instantiation: roots.c:MVM_instance_have_user_threads Unexecuted instantiation: collect.c:MVM_instance_have_user_threads Unexecuted instantiation: gen2.c:MVM_instance_have_user_threads Unexecuted instantiation: wb.c:MVM_instance_have_user_threads Unexecuted instantiation: objectid.c:MVM_instance_have_user_threads Unexecuted instantiation: finalize.c:MVM_instance_have_user_threads Unexecuted instantiation: validation.c:MVM_instance_have_user_threads Unexecuted instantiation: args.c:MVM_instance_have_user_threads Unexecuted instantiation: exceptions.c:MVM_instance_have_user_threads Unexecuted instantiation: interp.c:MVM_instance_have_user_threads Unexecuted instantiation: threadcontext.c:MVM_instance_have_user_threads Unexecuted instantiation: compunit.c:MVM_instance_have_user_threads Unexecuted instantiation: bytecode.c:MVM_instance_have_user_threads Unexecuted instantiation: frame.c:MVM_instance_have_user_threads Unexecuted instantiation: callstack.c:MVM_instance_have_user_threads Unexecuted instantiation: debug.c:MVM_instance_have_user_threads Unexecuted instantiation: bytecodedump.c:MVM_instance_have_user_threads Unexecuted instantiation: threads.c:MVM_instance_have_user_threads Unexecuted instantiation: ops.c:MVM_instance_have_user_threads Unexecuted instantiation: hll.c:MVM_instance_have_user_threads Unexecuted instantiation: loadbytecode.c:MVM_instance_have_user_threads Unexecuted instantiation: num.c:MVM_instance_have_user_threads Unexecuted instantiation: coerce.c:MVM_instance_have_user_threads Unexecuted instantiation: P6opaque.c:MVM_instance_have_user_threads Unexecuted instantiation: parametric.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMString.c:MVM_instance_have_user_threads Unexecuted instantiation: VMArray.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMHash.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMCFunction.c:MVM_instance_have_user_threads Unexecuted instantiation: KnowHOWREPR.c:MVM_instance_have_user_threads Unexecuted instantiation: KnowHOWAttributeREPR.c:MVM_instance_have_user_threads Unexecuted instantiation: P6str.c:MVM_instance_have_user_threads Unexecuted instantiation: containers.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMCode.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMOSHandle.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMCompUnit.c:MVM_instance_have_user_threads Unexecuted instantiation: MVMStaticFrame.c:MVM_instance_have_user_threads Unexecuted instantiation: P6int.c:MVM_instance_have_user_threads Unexecuted instantiation: P6num.c:MVM_instance_have_user_threads Unexecuted instantiation: Uninstantiable.c:MVM_instance_have_user_threads Unexecuted instantiation: procops.c:MVM_instance_have_user_threads Unexecuted instantiation: io.c:MVM_instance_have_user_threads Unexecuted instantiation: eventloop.c:MVM_instance_have_user_threads Unexecuted instantiation: syncfile.c:MVM_instance_have_user_threads Unexecuted instantiation: syncstream.c:MVM_instance_have_user_threads Unexecuted instantiation: syncpipe.c:MVM_instance_have_user_threads Unexecuted instantiation: syncsocket.c:MVM_instance_have_user_threads Unexecuted instantiation: fileops.c:MVM_instance_have_user_threads Unexecuted instantiation: dirops.c:MVM_instance_have_user_threads Unexecuted instantiation: callsite.c:MVM_instance_have_user_threads Unexecuted instantiation: timers.c:MVM_instance_have_user_threads Unexecuted instantiation: filewatchers.c:MVM_instance_have_user_threads Unexecuted instantiation: signals.c:MVM_instance_have_user_threads Unexecuted instantiation: asyncsocket.c:MVM_instance_have_user_threads Unexecuted instantiation: asyncsocketudp.c:MVM_instance_have_user_threads Unexecuted instantiation: reprs.c:MVM_instance_have_user_threads Unexecuted instantiation: reprconv.c:MVM_instance_have_user_threads |