/home/travis/build/MoarVM/MoarVM/src/spesh/candidate.h
Line | Count | Source |
1 | | /* A specialization candidate. */ |
2 | | struct MVMSpeshCandidate { |
3 | | /* The callsite we should have for a match. */ |
4 | | MVMCallsite *cs; |
5 | | |
6 | | /* Length of the specialized bytecode in bytes. */ |
7 | | MVMuint32 bytecode_size; |
8 | | |
9 | | /* The specialized bytecode. */ |
10 | | MVMuint8 *bytecode; |
11 | | |
12 | | /* Frame handlers for this specialization. */ |
13 | | MVMFrameHandler *handlers; |
14 | | |
15 | | /* Spesh slots, used to hold information for fast access. */ |
16 | | MVMCollectable **spesh_slots; |
17 | | |
18 | | /* Number of spesh slots. */ |
19 | | MVMuint32 num_spesh_slots; |
20 | | |
21 | | /* The number of deoptimization mappings we have. */ |
22 | | MVMuint32 num_deopts; |
23 | | |
24 | | /* Deoptimization mappings. */ |
25 | | MVMint32 *deopts; |
26 | | |
27 | | /* Number of inlines and inlines table; see graph.h for description of |
28 | | * the table format. */ |
29 | | MVMint32 num_inlines; |
30 | | MVMSpeshInline *inlines; |
31 | | |
32 | | /* The list of local types (only set up if we do inlines). */ |
33 | | MVMuint16 *local_types; |
34 | | |
35 | | /* The list of lexical types (only set up if we do inlines). */ |
36 | | MVMuint16 *lexical_types; |
37 | | |
38 | | /* Number of locals the specialized code has (may be different from the |
39 | | * original frame thanks to inlining). */ |
40 | | MVMuint16 num_locals; |
41 | | |
42 | | /* Number of lexicals the specialized code has. */ |
43 | | MVMuint16 num_lexicals; |
44 | | |
45 | | /* Memory sizes to allocate for work/env, taking into account inlining. */ |
46 | | MVMuint32 work_size; |
47 | | MVMuint32 env_size; |
48 | | |
49 | | /* Number of handlers. */ |
50 | | MVMuint32 num_handlers; |
51 | | |
52 | | /* JIT-code structure */ |
53 | | MVMJitCode *jitcode; |
54 | | }; |
55 | | |
56 | | /* Functions for creating and clearing up specializations. */ |
57 | | void MVM_spesh_candidate_add(MVMThreadContext *tc, MVMSpeshPlanned *p); |
58 | | void MVM_spesh_candidate_destroy(MVMThreadContext *tc, MVMSpeshCandidate *candidate); |
59 | | |
60 | | /* Functions for getting effective (specialized or not) frame handlers. */ |
61 | 1.01M | MVM_STATIC_INLINE MVMFrameHandler * MVM_frame_effective_handlers(MVMFrame *f) { |
62 | 1.01M | MVMSpeshCandidate *spesh_cand = f->spesh_cand; |
63 | 874k | return spesh_cand ? spesh_cand->handlers : f->static_info->body.handlers; |
64 | 1.01M | } Unexecuted instantiation: sc.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMNull.c:MVM_frame_effective_handlers Unexecuted instantiation: CPPStruct.c:MVM_frame_effective_handlers Unexecuted instantiation: NativeRef.c:MVM_frame_effective_handlers Unexecuted instantiation: MultiDimArray.c:MVM_frame_effective_handlers Unexecuted instantiation: Decoder.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMSpeshLog.c:MVM_frame_effective_handlers Unexecuted instantiation: 6model.c:MVM_frame_effective_handlers Unexecuted instantiation: bootstrap.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMAsyncTask.c:MVM_frame_effective_handlers Unexecuted instantiation: serialization.c:MVM_frame_effective_handlers Unexecuted instantiation: compiler.c:MVM_frame_effective_handlers Unexecuted instantiation: driver.c:MVM_frame_effective_handlers Unexecuted instantiation: dump.c:MVM_frame_effective_handlers Unexecuted instantiation: graph.c:MVM_frame_effective_handlers Unexecuted instantiation: codegen.c:MVM_frame_effective_handlers Unexecuted instantiation: candidate.c:MVM_frame_effective_handlers Unexecuted instantiation: manipulate.c:MVM_frame_effective_handlers Unexecuted instantiation: CPointer.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMCallCapture.c:MVM_frame_effective_handlers Unexecuted instantiation: P6bigint.c:MVM_frame_effective_handlers Unexecuted instantiation: NFA.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMException.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMDLLSym.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMMultiCache.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMContinuation.c:MVM_frame_effective_handlers Unexecuted instantiation: NativeCall.c:MVM_frame_effective_handlers Unexecuted instantiation: facts.c:MVM_frame_effective_handlers Unexecuted instantiation: CStr.c:MVM_frame_effective_handlers Unexecuted instantiation: CArray.c:MVM_frame_effective_handlers Unexecuted instantiation: CStruct.c:MVM_frame_effective_handlers Unexecuted instantiation: CUnion.c:MVM_frame_effective_handlers Unexecuted instantiation: ReentrantMutex.c:MVM_frame_effective_handlers Unexecuted instantiation: ConditionVariable.c:MVM_frame_effective_handlers Unexecuted instantiation: Semaphore.c:MVM_frame_effective_handlers Unexecuted instantiation: ConcBlockingQueue.c:MVM_frame_effective_handlers Unexecuted instantiation: heapsnapshot.c:MVM_frame_effective_handlers Unexecuted instantiation: unicode.c:MVM_frame_effective_handlers Unexecuted instantiation: normalize.c:MVM_frame_effective_handlers Unexecuted instantiation: latin1.c:MVM_frame_effective_handlers Unexecuted instantiation: utf16.c:MVM_frame_effective_handlers Unexecuted instantiation: windows1252.c:MVM_frame_effective_handlers Unexecuted instantiation: bigintops.c:MVM_frame_effective_handlers Unexecuted instantiation: instrument.c:MVM_frame_effective_handlers Unexecuted instantiation: profile.c:MVM_frame_effective_handlers Unexecuted instantiation: nfg.c:MVM_frame_effective_handlers Unexecuted instantiation: telemeh.c:MVM_frame_effective_handlers Unexecuted instantiation: crossthreadwrite.c:MVM_frame_effective_handlers Unexecuted instantiation: line_coverage.c:MVM_frame_effective_handlers Unexecuted instantiation: sys.c:MVM_frame_effective_handlers Unexecuted instantiation: moar.c:MVM_frame_effective_handlers Unexecuted instantiation: mmap.c:MVM_frame_effective_handlers Unexecuted instantiation: time.c:MVM_frame_effective_handlers Unexecuted instantiation: emit_posix_x64.c:MVM_frame_effective_handlers Unexecuted instantiation: stats.c:MVM_frame_effective_handlers Unexecuted instantiation: optimize.c:MVM_frame_effective_handlers Unexecuted instantiation: deopt.c:MVM_frame_effective_handlers Unexecuted instantiation: log.c:MVM_frame_effective_handlers Unexecuted instantiation: threshold.c:MVM_frame_effective_handlers Unexecuted instantiation: inline.c:MVM_frame_effective_handlers Unexecuted instantiation: osr.c:MVM_frame_effective_handlers Unexecuted instantiation: lookup.c:MVM_frame_effective_handlers Unexecuted instantiation: worker.c:MVM_frame_effective_handlers Unexecuted instantiation: Lexotic.c:MVM_frame_effective_handlers Unexecuted instantiation: plan.c:MVM_frame_effective_handlers Unexecuted instantiation: arg_guard.c:MVM_frame_effective_handlers Unexecuted instantiation: compile.c:MVM_frame_effective_handlers Unexecuted instantiation: decode_stream.c:MVM_frame_effective_handlers Unexecuted instantiation: ascii.c:MVM_frame_effective_handlers Unexecuted instantiation: parse_num.c:MVM_frame_effective_handlers Unexecuted instantiation: utf8.c:MVM_frame_effective_handlers Unexecuted instantiation: utf8_c8.c:MVM_frame_effective_handlers Unexecuted instantiation: allocation.c:MVM_frame_effective_handlers Unexecuted instantiation: nativecall.c:MVM_frame_effective_handlers Unexecuted instantiation: nativecall_dyncall.c:MVM_frame_effective_handlers Unexecuted instantiation: continuation.c:MVM_frame_effective_handlers Unexecuted instantiation: intcache.c:MVM_frame_effective_handlers Unexecuted instantiation: fixedsizealloc.c:MVM_frame_effective_handlers Unexecuted instantiation: regionalloc.c:MVM_frame_effective_handlers Unexecuted instantiation: config.c:MVM_frame_effective_handlers Unexecuted instantiation: orchestrate.c:MVM_frame_effective_handlers Unexecuted instantiation: ext.c:MVM_frame_effective_handlers Unexecuted instantiation: worklist.c:MVM_frame_effective_handlers Unexecuted instantiation: roots.c:MVM_frame_effective_handlers Unexecuted instantiation: collect.c:MVM_frame_effective_handlers Unexecuted instantiation: gen2.c:MVM_frame_effective_handlers Unexecuted instantiation: wb.c:MVM_frame_effective_handlers Unexecuted instantiation: objectid.c:MVM_frame_effective_handlers Unexecuted instantiation: finalize.c:MVM_frame_effective_handlers Unexecuted instantiation: debug.c:MVM_frame_effective_handlers Unexecuted instantiation: validation.c:MVM_frame_effective_handlers Unexecuted instantiation: args.c:MVM_frame_effective_handlers exceptions.c:MVM_frame_effective_handlers Line | Count | Source | 61 | 1.01M | MVM_STATIC_INLINE MVMFrameHandler * MVM_frame_effective_handlers(MVMFrame *f) { | 62 | 1.01M | MVMSpeshCandidate *spesh_cand = f->spesh_cand; | 63 | 874k | return spesh_cand ? spesh_cand->handlers : f->static_info->body.handlers; | 64 | 1.01M | } |
Unexecuted instantiation: interp.c:MVM_frame_effective_handlers Unexecuted instantiation: threadcontext.c:MVM_frame_effective_handlers Unexecuted instantiation: compunit.c:MVM_frame_effective_handlers Unexecuted instantiation: bytecode.c:MVM_frame_effective_handlers Unexecuted instantiation: frame.c:MVM_frame_effective_handlers Unexecuted instantiation: callstack.c:MVM_frame_effective_handlers Unexecuted instantiation: io.c:MVM_frame_effective_handlers Unexecuted instantiation: bytecodedump.c:MVM_frame_effective_handlers Unexecuted instantiation: threads.c:MVM_frame_effective_handlers Unexecuted instantiation: ops.c:MVM_frame_effective_handlers Unexecuted instantiation: hll.c:MVM_frame_effective_handlers Unexecuted instantiation: loadbytecode.c:MVM_frame_effective_handlers Unexecuted instantiation: num.c:MVM_frame_effective_handlers Unexecuted instantiation: coerce.c:MVM_frame_effective_handlers Unexecuted instantiation: dll.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMStaticFrame.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMCFunction.c:MVM_frame_effective_handlers Unexecuted instantiation: KnowHOWREPR.c:MVM_frame_effective_handlers Unexecuted instantiation: KnowHOWAttributeREPR.c:MVM_frame_effective_handlers Unexecuted instantiation: P6str.c:MVM_frame_effective_handlers Unexecuted instantiation: P6opaque.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMCode.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMOSHandle.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMCompUnit.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMHash.c:MVM_frame_effective_handlers Unexecuted instantiation: P6int.c:MVM_frame_effective_handlers Unexecuted instantiation: P6num.c:MVM_frame_effective_handlers Unexecuted instantiation: Uninstantiable.c:MVM_frame_effective_handlers Unexecuted instantiation: HashAttrStore.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMThread.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMIter.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMContext.c:MVM_frame_effective_handlers Unexecuted instantiation: SCRef.c:MVM_frame_effective_handlers Unexecuted instantiation: signals.c:MVM_frame_effective_handlers Unexecuted instantiation: eventloop.c:MVM_frame_effective_handlers Unexecuted instantiation: syncfile.c:MVM_frame_effective_handlers Unexecuted instantiation: syncsocket.c:MVM_frame_effective_handlers Unexecuted instantiation: fileops.c:MVM_frame_effective_handlers Unexecuted instantiation: dirops.c:MVM_frame_effective_handlers Unexecuted instantiation: procops.c:MVM_frame_effective_handlers Unexecuted instantiation: timers.c:MVM_frame_effective_handlers Unexecuted instantiation: filewatchers.c:MVM_frame_effective_handlers Unexecuted instantiation: callsite.c:MVM_frame_effective_handlers Unexecuted instantiation: asyncsocket.c:MVM_frame_effective_handlers Unexecuted instantiation: asyncsocketudp.c:MVM_frame_effective_handlers Unexecuted instantiation: reprs.c:MVM_frame_effective_handlers Unexecuted instantiation: reprconv.c:MVM_frame_effective_handlers Unexecuted instantiation: containers.c:MVM_frame_effective_handlers Unexecuted instantiation: parametric.c:MVM_frame_effective_handlers Unexecuted instantiation: MVMString.c:MVM_frame_effective_handlers Unexecuted instantiation: VMArray.c:MVM_frame_effective_handlers |