Created
March 30, 2016 00:34
-
-
Save timo/23a1edfe46f9d0afb0b5a01f6f39ce4a to your computer and use it in GitHub Desktop.
partial pahole output for MoarVM's libmoar.so
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct MVMCompUnitBody { | |
MVMuint8 * data_start; /* 0 8 */ | |
MVMuint32 data_size; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMObject * * coderefs; /* 16 8 */ | |
MVMuint32 num_frames; /* 24 4 */ | |
MVMuint32 orig_frames; /* 28 4 */ | |
MVMStaticFrame * main_frame; /* 32 8 */ | |
MVMStaticFrame * load_frame; /* 40 8 */ | |
MVMStaticFrame * deserialize_frame; /* 48 8 */ | |
MVMCallsite * * callsites; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
MVMuint32 num_callsites; /* 64 4 */ | |
MVMuint32 orig_callsites; /* 68 4 */ | |
MVMuint16 max_callsite_size; /* 72 2 */ | |
MVMuint16 num_extops; /* 74 2 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMExtOpRecord * extops; /* 80 8 */ | |
MVMString * * strings; /* 88 8 */ | |
MVMuint32 num_strings; /* 96 4 */ | |
MVMuint32 orig_strings; /* 100 4 */ | |
MVMuint32 * string_heap_fast_table; /* 104 8 */ | |
MVMuint32 string_heap_fast_table_top; /* 112 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMuint8 * string_heap_start; /* 120 8 */ | |
/* --- cacheline 2 boundary (128 bytes) --- */ | |
MVMuint8 * string_heap_read_limit; /* 128 8 */ | |
MVMint32 serialized_size; /* 136 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMuint8 * serialized; /* 144 8 */ | |
MVMSerializationContext * * scs; /* 152 8 */ | |
MVMuint32 num_scs; /* 160 4 */ | |
MVMDeallocate deallocate; /* 164 4 */ | |
MVMSerializationContextBody * * scs_to_resolve; /* 168 8 */ | |
MVMint32 * sc_handle_idxs; /* 176 8 */ | |
MVMHLLConfig * hll_config; /* 184 8 */ | |
/* --- cacheline 3 boundary (192 bytes) --- */ | |
MVMString * hll_name; /* 192 8 */ | |
MVMString * filename; /* 200 8 */ | |
void * handle; /* 208 8 */ | |
MVMObject * update_mutex; /* 216 8 */ | |
MVMuint16 bytecode_version; /* 224 2 */ | |
/* size: 232, cachelines: 4, members: 34 */ | |
/* sum members: 210, holes: 4, sum holes: 16 */ | |
/* padding: 6 */ | |
/* last cacheline: 40 bytes */ | |
}; | |
struct MVMExtOpRecord { | |
MVMString * name; /* 0 8 */ | |
MVMOpInfo * info; /* 8 8 */ | |
MVMExtOpFunc * func; /* 16 8 */ | |
MVMuint16 operand_bytes; /* 24 2 */ | |
MVMuint16 no_jit; /* 26 2 */ | |
MVMuint16 allocating; /* 28 2 */ | |
MVMuint8 operand_descriptor[8]; /* 30 8 */ | |
/* XXX 2 bytes hole, try to pack */ | |
MVMExtOpSpesh * spesh; /* 40 8 */ | |
MVMExtOpFactDiscover * discover; /* 48 8 */ | |
/* size: 56, cachelines: 1, members: 9 */ | |
/* sum members: 54, holes: 1, sum holes: 2 */ | |
/* last cacheline: 56 bytes */ | |
}; | |
struct MVMFrame { | |
MVMThreadContext * tc; /* 0 8 */ | |
MVMRegister * env; /* 8 8 */ | |
MVMRegister * work; /* 16 8 */ | |
MVMRegister * args; /* 24 8 */ | |
MVMCallsite * cur_args_callsite; /* 32 8 */ | |
MVMFrame * outer; /* 40 8 */ | |
MVMFrame * caller; /* 48 8 */ | |
MVMStaticFrame * static_info; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
MVMObject * code_ref; /* 64 8 */ | |
MVMArgProcContext params; /* 72 40 */ | |
size_t ref_count; /* 112 8 */ | |
MVMint32 refd_by_object; /* 120 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
/* --- cacheline 2 boundary (128 bytes) --- */ | |
MVMuint8 * effective_bytecode; /* 128 8 */ | |
MVMFrameHandler * effective_handlers; /* 136 8 */ | |
MVMCollectable * * effective_spesh_slots; /* 144 8 */ | |
MVMCollectable * * spesh_log_slots; /* 152 8 */ | |
MVMSpeshCandidate * spesh_cand; /* 160 8 */ | |
MVMuint8 * return_address; /* 168 8 */ | |
MVMRegister * return_value; /* 176 8 */ | |
MVMReturnType return_type; /* 184 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
/* --- cacheline 3 boundary (192 bytes) --- */ | |
MVMSpecialReturn special_return; /* 192 8 */ | |
MVMSpecialReturn special_unwind; /* 200 8 */ | |
void * special_return_data; /* 208 8 */ | |
MVMSpecialReturnDataMark mark_special_return_data; /* 216 8 */ | |
size_t gc_seq_number; /* 224 8 */ | |
MVMuint8 * throw_address; /* 232 8 */ | |
MVMContinuationTag * continuation_tags; /* 240 8 */ | |
MVMObject * context_object; /* 248 8 */ | |
/* --- cacheline 4 boundary (256 bytes) --- */ | |
MVMString * dynlex_cache_name; /* 256 8 */ | |
MVMRegister * dynlex_cache_reg; /* 264 8 */ | |
MVMuint16 dynlex_cache_type; /* 272 2 */ | |
MVMuint16 allocd_work; /* 274 2 */ | |
MVMuint16 allocd_env; /* 276 2 */ | |
MVMuint8 keep_caller; /* 278 1 */ | |
MVMuint8 in_continuation; /* 279 1 */ | |
MVMuint8 flags; /* 280 1 */ | |
MVMint8 spesh_log_idx; /* 281 1 */ | |
MVMuint8 osr_counter; /* 282 1 */ | |
/* XXX 5 bytes hole, try to pack */ | |
void * jit_entry_label; /* 288 8 */ | |
/* size: 296, cachelines: 5, members: 39 */ | |
/* sum members: 283, holes: 3, sum holes: 13 */ | |
/* last cacheline: 40 bytes */ | |
}; | |
struct MVMLexicalRegistry { | |
MVMString * key; /* 0 8 */ | |
MVMuint32 value; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
UT_hash_handle hash_handle; /* 16 40 */ | |
/* size: 56, cachelines: 1, members: 3 */ | |
/* sum members: 52, holes: 1, sum holes: 4 */ | |
/* last cacheline: 56 bytes */ | |
}; | |
struct MVMNGFTrieNodeEntry { | |
MVMCodepoint code; /* 0 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMNFGTrieNode * node; /* 8 8 */ | |
/* size: 16, cachelines: 1, members: 2 */ | |
/* sum members: 12, holes: 1, sum holes: 4 */ | |
/* last cacheline: 16 bytes */ | |
}; | |
struct MVMOpInfo { | |
MVMuint16 opcode; /* 0 2 */ | |
/* XXX 6 bytes hole, try to pack */ | |
const char * name; /* 8 8 */ | |
char mark[2]; /* 16 2 */ | |
MVMuint16 num_operands; /* 18 2 */ | |
MVMuint8 pure; /* 20 1 */ | |
MVMuint8 deopt_point; /* 21 1 */ | |
MVMuint8 no_inline; /* 22 1 */ | |
MVMuint8 jittivity; /* 23 1 */ | |
MVMuint8 operands[8]; /* 24 8 */ | |
/* size: 32, cachelines: 1, members: 9 */ | |
/* sum members: 26, holes: 1, sum holes: 6 */ | |
/* last cacheline: 32 bytes */ | |
}; | |
struct MVMSpeshGraph { | |
MVMStaticFrame * sf; /* 0 8 */ | |
MVMCallsite * cs; /* 8 8 */ | |
MVMuint8 * bytecode; /* 16 8 */ | |
MVMFrameHandler * handlers; /* 24 8 */ | |
MVMuint32 bytecode_size; /* 32 4 */ | |
MVMuint32 num_handlers; /* 36 4 */ | |
MVMSpeshBB * entry; /* 40 8 */ | |
MVMSpeshFacts * * facts; /* 48 8 */ | |
MVMuint16 * fact_counts; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
MVMSpeshGuard * arg_guards; /* 64 8 */ | |
MVMint32 num_arg_guards; /* 72 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMSpeshLogGuard * log_guards; /* 80 8 */ | |
MVMint32 num_log_guards; /* 88 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMSpeshMemBlock * mem_block; /* 96 8 */ | |
MVMCollectable * * spesh_slots; /* 104 8 */ | |
MVMint32 num_spesh_slots; /* 112 4 */ | |
MVMint32 alloc_spesh_slots; /* 116 4 */ | |
MVMint32 * deopt_addrs; /* 120 8 */ | |
/* --- cacheline 2 boundary (128 bytes) --- */ | |
MVMint32 num_deopt_addrs; /* 128 4 */ | |
MVMint32 alloc_deopt_addrs; /* 132 4 */ | |
MVMSpeshInline * inlines; /* 136 8 */ | |
MVMint32 num_inlines; /* 144 4 */ | |
MVMint32 num_log_slots; /* 148 4 */ | |
MVMCollectable * * log_slots; /* 152 8 */ | |
MVMint32 num_bbs; /* 160 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMuint16 * local_types; /* 168 8 */ | |
MVMuint16 * lexical_types; /* 176 8 */ | |
MVMuint16 num_locals; /* 184 2 */ | |
MVMuint16 num_lexicals; /* 186 2 */ | |
MVMuint16 num_temps; /* 188 2 */ | |
MVMuint16 alloc_temps; /* 190 2 */ | |
/* --- cacheline 3 boundary (192 bytes) --- */ | |
MVMSpeshTemporary * temps; /* 192 8 */ | |
MVMOpInfo * phi_infos; /* 200 8 */ | |
MVMSpeshCandidate * cand; /* 208 8 */ | |
/* size: 216, cachelines: 4, members: 34 */ | |
/* sum members: 204, holes: 3, sum holes: 12 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMSpeshCandidate { | |
MVMCallsite * cs; /* 0 8 */ | |
MVMSpeshGuard * guards; /* 8 8 */ | |
MVMuint32 num_guards; /* 16 4 */ | |
MVMuint32 bytecode_size; /* 20 4 */ | |
MVMuint8 * bytecode; /* 24 8 */ | |
MVMFrameHandler * handlers; /* 32 8 */ | |
MVMCollectable * * spesh_slots; /* 40 8 */ | |
MVMuint32 num_spesh_slots; /* 48 4 */ | |
MVMuint32 num_deopts; /* 52 4 */ | |
MVMint32 * deopts; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
size_t log_enter_idx; /* 64 8 */ | |
size_t log_exits_remaining; /* 72 8 */ | |
MVMSpeshGraph * sg; /* 80 8 */ | |
MVMCollectable * * log_slots; /* 88 8 */ | |
MVMuint32 num_log_slots; /* 96 4 */ | |
MVMint32 num_inlines; /* 100 4 */ | |
MVMSpeshInline * inlines; /* 104 8 */ | |
MVMuint16 * local_types; /* 112 8 */ | |
MVMuint16 * lexical_types; /* 120 8 */ | |
/* --- cacheline 2 boundary (128 bytes) --- */ | |
MVMuint16 num_locals; /* 128 2 */ | |
MVMuint16 num_lexicals; /* 130 2 */ | |
MVMuint32 work_size; /* 132 4 */ | |
MVMuint32 env_size; /* 136 4 */ | |
MVMuint32 num_handlers; /* 140 4 */ | |
MVMuint32 osr_logging; /* 144 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMJitCode * jitcode; /* 152 8 */ | |
/* size: 160, cachelines: 3, members: 26 */ | |
/* sum members: 156, holes: 1, sum holes: 4 */ | |
/* last cacheline: 32 bytes */ | |
}; | |
struct MVMSpeshInline { | |
MVMuint32 start; /* 0 4 */ | |
MVMuint32 end; /* 4 4 */ | |
MVMCode * code; /* 8 8 */ | |
MVMuint16 locals_start; /* 16 2 */ | |
MVMuint16 lexicals_start; /* 18 2 */ | |
MVMuint16 res_reg; /* 20 2 */ | |
/* XXX 2 bytes hole, try to pack */ | |
MVMReturnType res_type; /* 24 4 */ | |
MVMuint32 return_deopt_idx; /* 28 4 */ | |
MVMSpeshGraph * g; /* 32 8 */ | |
/* size: 40, cachelines: 1, members: 9 */ | |
/* sum members: 38, holes: 1, sum holes: 2 */ | |
/* last cacheline: 40 bytes */ | |
}; | |
struct MVMStaticFrameBody { | |
MVMuint8 * bytecode; /* 0 8 */ | |
MVMCompUnit * cu; /* 8 8 */ | |
MVMuint16 * local_types; /* 16 8 */ | |
MVMuint16 * lexical_types; /* 24 8 */ | |
MVMLexicalRegistry * lexical_names; /* 32 8 */ | |
MVMLexicalRegistry * * lexical_names_list; /* 40 8 */ | |
MVMRegister * static_env; /* 48 8 */ | |
MVMuint8 * static_env_flags; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
MVMuint32 has_state_vars; /* 64 4 */ | |
MVMuint32 instrumentation_level; /* 68 4 */ | |
MVMuint32 invocations; /* 72 4 */ | |
MVMuint32 spesh_threshold; /* 76 4 */ | |
MVMSpeshCandidate * spesh_candidates; /* 80 8 */ | |
MVMuint32 num_spesh_candidates; /* 88 4 */ | |
MVMuint32 env_size; /* 92 4 */ | |
MVMuint32 work_size; /* 96 4 */ | |
MVMuint32 bytecode_size; /* 100 4 */ | |
MVMuint32 num_locals; /* 104 4 */ | |
MVMuint32 num_lexicals; /* 108 4 */ | |
MVMFrameHandler * handlers; /* 112 8 */ | |
MVMuint32 num_handlers; /* 120 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
/* --- cacheline 2 boundary (128 bytes) --- */ | |
MVMString * cuuid; /* 128 8 */ | |
MVMString * name; /* 136 8 */ | |
MVMStaticFrame * outer; /* 144 8 */ | |
MVMCode * static_code; /* 152 8 */ | |
MVMuint32 pool_index; /* 160 4 */ | |
MVMuint32 num_annotations; /* 164 4 */ | |
MVMuint8 * annotations_data; /* 168 8 */ | |
MVMuint8 has_exit_handler; /* 176 1 */ | |
MVMuint8 is_thunk; /* 177 1 */ | |
MVMuint8 fully_deserialized; /* 178 1 */ | |
/* XXX 5 bytes hole, try to pack */ | |
MVMuint8 * orig_bytecode; /* 184 8 */ | |
/* --- cacheline 3 boundary (192 bytes) --- */ | |
MVMuint8 * frame_data_pos; /* 192 8 */ | |
MVMuint8 * frame_static_lex_pos; /* 200 8 */ | |
MVMint32 code_obj_sc_dep_idx; /* 208 4 */ | |
MVMint32 code_obj_sc_idx; /* 212 4 */ | |
MVMStaticFrameInstrumentation * instrumentation; /* 216 8 */ | |
/* size: 224, cachelines: 4, members: 37 */ | |
/* sum members: 215, holes: 2, sum holes: 9 */ | |
/* last cacheline: 32 bytes */ | |
}; | |
struct MVMNativeCallback { | |
void * cb; /* 0 8 */ | |
MVMObject * target; /* 8 8 */ | |
MVMThreadContext * tc; /* 16 8 */ | |
MVMint16 * typeinfos; /* 24 8 */ | |
MVMObject * * types; /* 32 8 */ | |
MVMint32 num_types; /* 40 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMCallsite * cs; /* 48 8 */ | |
MVMNativeCallback * next; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
/* size: 64, cachelines: 1, members: 8 */ | |
/* sum members: 60, holes: 1, sum holes: 4 */ | |
}; | |
struct MVMJitCode { | |
MVMJitFunc func_ptr; /* 0 8 */ | |
size_t size; /* 8 8 */ | |
MVMuint8 * bytecode; /* 16 8 */ | |
MVMStaticFrame * sf; /* 24 8 */ | |
MVMint32 num_labels; /* 32 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
void * * labels; /* 40 8 */ | |
MVMint32 num_bbs; /* 48 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMint32 * bb_labels; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
MVMint32 num_deopts; /* 64 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMJitDeopt * deopts; /* 72 8 */ | |
MVMint32 num_inlines; /* 80 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMJitInline * inlines; /* 88 8 */ | |
MVMint32 num_handlers; /* 96 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMJitHandler * handlers; /* 104 8 */ | |
MVMint32 seq_nr; /* 112 4 */ | |
/* size: 120, cachelines: 2, members: 15 */ | |
/* sum members: 96, holes: 5, sum holes: 20 */ | |
/* padding: 4 */ | |
/* last cacheline: 56 bytes */ | |
}; | |
struct MVMHeapSnapshotCollectable { | |
MVMuint16 kind; /* 0 2 */ | |
MVMuint16 collectable_size; /* 2 2 */ | |
MVMuint32 type_or_frame_index; /* 4 4 */ | |
MVMuint32 num_refs; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMuint64 refs_start; /* 16 8 */ | |
MVMuint64 unmanaged_size; /* 24 8 */ | |
/* size: 32, cachelines: 1, members: 6 */ | |
/* sum members: 28, holes: 1, sum holes: 4 */ | |
/* last cacheline: 32 bytes */ | |
}; | |
struct MVMHeapSnapshotWorkItem { | |
MVMuint16 kind; /* 0 2 */ | |
/* XXX 6 bytes hole, try to pack */ | |
MVMuint64 col_idx; /* 8 8 */ | |
void * target; /* 16 8 */ | |
/* size: 24, cachelines: 1, members: 3 */ | |
/* sum members: 18, holes: 1, sum holes: 6 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMExceptionBody { | |
MVMString * message; /* 0 8 */ | |
MVMObject * payload; /* 8 8 */ | |
MVMint32 category; /* 16 4 */ | |
MVMuint8 return_after_unwind; /* 20 1 */ | |
/* XXX 3 bytes hole, try to pack */ | |
MVMFrame * origin; /* 24 8 */ | |
MVMuint8 * resume_addr; /* 32 8 */ | |
void * jit_resume_label; /* 40 8 */ | |
/* size: 48, cachelines: 1, members: 7 */ | |
/* sum members: 45, holes: 1, sum holes: 3 */ | |
/* last cacheline: 48 bytes */ | |
}; | |
struct MVMIterBody { | |
MVMuint32 mode; /* 0 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMObject * target; /* 8 8 */ | |
union { | |
struct { | |
MVMHashEntry * curr; /* 16 8 */ | |
MVMHashEntry * next; /* 24 8 */ | |
unsigned int bucket_state; /* 32 4 */ | |
} hash_state; /* 24 */ | |
struct { | |
MVMint64 index; /* 16 8 */ | |
MVMint64 limit; /* 24 8 */ | |
} array_state; /* 16 */ | |
}; /* 16 24 */ | |
/* size: 40, cachelines: 1, members: 3 */ | |
/* sum members: 36, holes: 1, sum holes: 4 */ | |
/* last cacheline: 40 bytes */ | |
}; | |
struct MVMNativeCallBody { | |
char * lib_name; /* 0 8 */ | |
DLLib * lib_handle; /* 8 8 */ | |
char * sym_name; /* 16 8 */ | |
void * entry_point; /* 24 8 */ | |
MVMint16 convention; /* 32 2 */ | |
MVMint16 num_args; /* 34 2 */ | |
MVMint16 ret_type; /* 36 2 */ | |
/* XXX 2 bytes hole, try to pack */ | |
MVMint16 * arg_types; /* 40 8 */ | |
MVMObject * * arg_info; /* 48 8 */ | |
/* size: 56, cachelines: 1, members: 9 */ | |
/* sum members: 54, holes: 1, sum holes: 2 */ | |
/* last cacheline: 56 bytes */ | |
}; | |
struct MVMNormalizer { | |
MVMNormalization form; /* 0 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMCodepoint * buffer; /* 8 8 */ | |
MVMint32 buffer_size; /* 16 4 */ | |
MVMint32 buffer_start; /* 20 4 */ | |
MVMint32 buffer_end; /* 24 4 */ | |
MVMint32 buffer_norm_end; /* 28 4 */ | |
MVMCodepoint first_significant; /* 32 4 */ | |
MVMint32 quick_check_property; /* 36 4 */ | |
MVMint32 translate_newlines; /* 40 4 */ | |
/* size: 48, cachelines: 1, members: 9 */ | |
/* sum members: 40, holes: 1, sum holes: 4 */ | |
/* padding: 4 */ | |
/* last cacheline: 48 bytes */ | |
}; | |
struct MVMDecodeStream { | |
MVMDecodeStreamBytes * bytes_head; /* 0 8 */ | |
MVMDecodeStreamBytes * bytes_tail; /* 8 8 */ | |
MVMDecodeStreamChars * chars_head; /* 16 8 */ | |
MVMDecodeStreamChars * chars_tail; /* 24 8 */ | |
MVMint64 abs_byte_pos; /* 32 8 */ | |
MVMint32 bytes_head_pos; /* 40 4 */ | |
MVMint32 chars_head_pos; /* 44 4 */ | |
MVMint32 encoding; /* 48 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMNormalizer norm; /* 56 48 */ | |
/* --- cacheline 1 boundary (64 bytes) was 40 bytes ago --- */ | |
/* size: 104, cachelines: 2, members: 9 */ | |
/* sum members: 100, holes: 1, sum holes: 4 */ | |
/* last cacheline: 40 bytes */ | |
}; | |
struct MVMDecodeStreamBytes { | |
char * bytes; /* 0 8 */ | |
MVMint32 length; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMDecodeStreamBytes * next; /* 16 8 */ | |
/* size: 24, cachelines: 1, members: 3 */ | |
/* sum members: 20, holes: 1, sum holes: 4 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMDecodeStreamChars { | |
MVMGrapheme32 * chars; /* 0 8 */ | |
MVMint32 length; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMDecodeStreamChars * next; /* 16 8 */ | |
/* size: 24, cachelines: 1, members: 3 */ | |
/* sum members: 20, holes: 1, sum holes: 4 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMIOSyncStreamData { | |
MVMint8 is_tty; /* 0 1 */ | |
/* XXX 7 bytes hole, try to pack */ | |
uv_stream_t * handle; /* 8 8 */ | |
MVMint64 encoding; /* 16 8 */ | |
MVMint64 eof; /* 24 8 */ | |
MVMDecodeStream * ds; /* 32 8 */ | |
MVMThreadContext * cur_tc; /* 40 8 */ | |
MVMint64 total_bytes_written; /* 48 8 */ | |
MVMDecodeStreamSeparators sep_spec; /* 56 24 */ | |
/* --- cacheline 1 boundary (64 bytes) was 16 bytes ago --- */ | |
MVMint32 translate_newlines; /* 80 4 */ | |
/* size: 88, cachelines: 2, members: 9 */ | |
/* sum members: 77, holes: 1, sum holes: 7 */ | |
/* padding: 4 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMMultiArityCache { | |
MVMuint8 num_entries; /* 0 1 */ | |
/* XXX 7 bytes hole, try to pack */ | |
MVMint64 * type_ids; /* 8 8 */ | |
MVMuint8 * named_ok; /* 16 8 */ | |
MVMObject * * results; /* 24 8 */ | |
/* size: 32, cachelines: 1, members: 4 */ | |
/* sum members: 25, holes: 1, sum holes: 7 */ | |
/* last cacheline: 32 bytes */ | |
}; | |
struct MVMGraphemeIter { | |
union { | |
MVMGrapheme32 * blob_32; /* 8 */ | |
MVMGraphemeASCII * blob_ascii; /* 8 */ | |
MVMGrapheme8 * blob_8; /* 8 */ | |
void * any; /* 8 */ | |
} active_blob; /* 0 8 */ | |
MVMuint16 blob_type; /* 8 2 */ | |
MVMuint16 strands_remaining; /* 10 2 */ | |
MVMStringIndex pos; /* 12 4 */ | |
MVMStringIndex end; /* 16 4 */ | |
MVMStringIndex start; /* 20 4 */ | |
MVMuint32 repetitions; /* 24 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMStringStrand * next_strand; /* 32 8 */ | |
/* size: 40, cachelines: 1, members: 8 */ | |
/* sum members: 36, holes: 1, sum holes: 4 */ | |
/* last cacheline: 40 bytes */ | |
}; | |
struct MVMSpeshCode { | |
MVMuint8 * bytecode; /* 0 8 */ | |
MVMuint32 bytecode_size; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMFrameHandler * handlers; /* 16 8 */ | |
/* size: 24, cachelines: 1, members: 3 */ | |
/* sum members: 20, holes: 1, sum holes: 4 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMJitGraph { | |
MVMSpeshGraph * sg; /* 0 8 */ | |
MVMJitNode * first_node; /* 8 8 */ | |
MVMJitNode * last_node; /* 16 8 */ | |
MVMint32 num_labels; /* 24 4 */ | |
MVMint32 num_bbs; /* 28 4 */ | |
MVMint32 * bb_labels; /* 32 8 */ | |
MVMint32 num_deopts; /* 40 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMJitDeopt * deopts; /* 48 8 */ | |
MVMint32 num_handlers; /* 56 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
MVMJitHandler * handlers; /* 64 8 */ | |
MVMint32 num_inlines; /* 72 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMJitInline * inlines; /* 80 8 */ | |
/* size: 88, cachelines: 2, members: 12 */ | |
/* sum members: 76, holes: 3, sum holes: 12 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMJitNode { | |
MVMJitNode * next; /* 0 8 */ | |
MVMJitNodeType type; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
union { | |
MVMJitPrimitive prim; /* 8 */ | |
MVMJitCallC call; /* 32 */ | |
MVMJitBranch branch; /* 16 */ | |
MVMJitLabel label; /* 4 */ | |
MVMJitGuard guard; /* 16 */ | |
MVMJitInvoke invoke; /* 32 */ | |
MVMJitJumpList jumplist; /* 32 */ | |
MVMJitControl control; /* 16 */ | |
} u; /* 16 32 */ | |
/* size: 48, cachelines: 1, members: 3 */ | |
/* sum members: 44, holes: 1, sum holes: 4 */ | |
/* last cacheline: 48 bytes */ | |
}; | |
struct MVMJitBranch { | |
MVMint32 dest; /* 0 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMSpeshIns * ins; /* 8 8 */ | |
/* size: 16, cachelines: 1, members: 2 */ | |
/* sum members: 12, holes: 1, sum holes: 4 */ | |
/* last cacheline: 16 bytes */ | |
}; | |
struct MVMJitCallArg { | |
MVMJitArgType type; /* 0 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
union { | |
MVMint64 lit_i64; /* 8 */ | |
MVMnum64 lit_n64; /* 8 */ | |
MVMJitInterpVar ivar; /* 4 */ | |
MVMint16 reg; /* 2 */ | |
void * ptr; /* 8 */ | |
} v; /* 8 8 */ | |
/* size: 16, cachelines: 1, members: 2 */ | |
/* sum members: 12, holes: 1, sum holes: 4 */ | |
/* last cacheline: 16 bytes */ | |
}; | |
struct MVMJitInvoke { | |
MVMint16 callsite_idx; /* 0 2 */ | |
MVMint16 arg_count; /* 2 2 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMSpeshIns * * arg_ins; /* 8 8 */ | |
MVMReturnType return_type; /* 16 4 */ | |
MVMint16 return_register; /* 20 2 */ | |
MVMint16 code_register; /* 22 2 */ | |
MVMint16 spesh_cand; /* 24 2 */ | |
MVMint8 is_fast; /* 26 1 */ | |
/* XXX 1 byte hole, try to pack */ | |
MVMint32 reentry_label; /* 28 4 */ | |
/* size: 32, cachelines: 1, members: 9 */ | |
/* sum members: 27, holes: 2, sum holes: 5 */ | |
/* last cacheline: 32 bytes */ | |
}; | |
struct MVMJitJumpList { | |
MVMint64 num_labels; /* 0 8 */ | |
MVMint16 reg; /* 8 2 */ | |
/* XXX 6 bytes hole, try to pack */ | |
MVMint32 * in_labels; /* 16 8 */ | |
MVMint32 * out_labels; /* 24 8 */ | |
/* size: 32, cachelines: 1, members: 4 */ | |
/* sum members: 26, holes: 1, sum holes: 6 */ | |
/* last cacheline: 32 bytes */ | |
}; | |
struct MVMUnicodeNameRegistry { | |
char * name; /* 0 8 */ | |
MVMGrapheme32 codepoint; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
UT_hash_handle hash_handle; /* 16 40 */ | |
/* size: 56, cachelines: 1, members: 3 */ | |
/* sum members: 52, holes: 1, sum holes: 4 */ | |
/* last cacheline: 56 bytes */ | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct MVMSerializationReader { | |
MVMSerializationRoot root; /* 0 152 */ | |
/* --- cacheline 2 boundary (128 bytes) was 24 bytes ago --- */ | |
MVMint32 stables_data_offset; /* 152 4 */ | |
MVMint32 objects_data_offset; /* 156 4 */ | |
MVMint32 contexts_data_offset; /* 160 4 */ | |
MVMint32 param_interns_data_offset; /* 164 4 */ | |
char * stables_data_end; /* 168 8 */ | |
char * objects_data_end; /* 176 8 */ | |
char * contexts_data_end; /* 184 8 */ | |
/* --- cacheline 3 boundary (192 bytes) --- */ | |
char * param_interns_data_end; /* 192 8 */ | |
char * * cur_read_buffer; /* 200 8 */ | |
MVMint32 * cur_read_offset; /* 208 8 */ | |
char * * cur_read_end; /* 216 8 */ | |
MVMObject * codes_list; /* 224 8 */ | |
MVMuint32 num_static_codes; /* 232 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMFrame * * contexts; /* 240 8 */ | |
MVMDeserializeWorklist wl_objects; /* 248 16 */ | |
/* --- cacheline 4 boundary (256 bytes) was 8 bytes ago --- */ | |
MVMDeserializeWorklist wl_stables; /* 264 16 */ | |
MVMuint32 working; /* 280 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMObject * current_object; /* 288 8 */ | |
char * data; /* 296 8 */ | |
MVMuint32 data_needs_free; /* 304 4 */ | |
/* size: 312, cachelines: 5, members: 21 */ | |
/* sum members: 300, holes: 2, sum holes: 8 */ | |
/* padding: 4 */ | |
/* last cacheline: 56 bytes */ | |
}; | |
struct MVMSerializationRoot { | |
MVMint32 version; /* 0 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMSerializationContext * sc; /* 8 8 */ | |
MVMSerializationContext * * dependent_scs; /* 16 8 */ | |
char * dependencies_table; /* 24 8 */ | |
MVMint32 num_dependencies; /* 32 4 */ | |
MVMint32 num_stables; /* 36 4 */ | |
char * stables_table; /* 40 8 */ | |
char * stables_data; /* 48 8 */ | |
char * objects_table; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
char * objects_data; /* 64 8 */ | |
MVMint32 num_objects; /* 72 4 */ | |
MVMint32 num_closures; /* 76 4 */ | |
char * closures_table; /* 80 8 */ | |
char * contexts_table; /* 88 8 */ | |
char * contexts_data; /* 96 8 */ | |
MVMint32 num_contexts; /* 104 4 */ | |
MVMint32 num_repos; /* 108 4 */ | |
char * repos_table; /* 112 8 */ | |
MVMint32 num_param_interns; /* 120 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
/* --- cacheline 2 boundary (128 bytes) --- */ | |
char * param_interns_data; /* 128 8 */ | |
MVMObject * string_heap; /* 136 8 */ | |
MVMCompUnit * string_comp_unit; /* 144 8 */ | |
/* size: 152, cachelines: 3, members: 22 */ | |
/* sum members: 144, holes: 2, sum holes: 8 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMThreadContext { | |
void * nursery_alloc; /* 0 8 */ | |
void * nursery_alloc_limit; /* 8 8 */ | |
size_t gc_status; /* 16 8 */ | |
MVMuint32 allocate_in_gen2; /* 24 4 */ | |
MVMuint32 thread_id; /* 28 4 */ | |
MVMThread * thread_obj; /* 32 8 */ | |
MVMFrame * thread_entry_frame; /* 40 8 */ | |
MVMuint8 * * interp_cur_op; /* 48 8 */ | |
MVMuint8 * * interp_bytecode_start; /* 56 8 */ | |
/* --- cacheline 1 boundary (64 bytes) --- */ | |
MVMRegister * * interp_reg_base; /* 64 8 */ | |
MVMCompUnit * * interp_cu; /* 72 8 */ | |
MVMFrame * cur_frame; /* 80 8 */ | |
uv_loop_t * loop; /* 88 8 */ | |
MVMObject * cur_usecapture; /* 96 8 */ | |
MVMActiveHandler * active_handlers; /* 104 8 */ | |
MVMObject * last_handler_result; /* 112 8 */ | |
uv_mutex_t * ex_release_mutex; /* 120 8 */ | |
/* --- cacheline 2 boundary (128 bytes) --- */ | |
MVMInstance * instance; /* 128 8 */ | |
void * nursery_fromspace; /* 136 8 */ | |
void * nursery_tospace; /* 144 8 */ | |
MVMGen2Allocator * gen2; /* 152 8 */ | |
MVMuint32 gc_promoted_bytes; /* 160 4 */ | |
MVMint32 serialized_size; /* 164 4 */ | |
char * serialized; /* 168 8 */ | |
MVMObject * serialized_string_heap; /* 176 8 */ | |
MVMuint32 num_temproots; /* 184 4 */ | |
MVMuint32 mark_temproots; /* 188 4 */ | |
/* --- cacheline 3 boundary (192 bytes) --- */ | |
MVMuint32 alloc_temproots; /* 192 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMCollectable * * * temproots; /* 200 8 */ | |
MVMuint32 num_gen2roots; /* 208 4 */ | |
MVMuint32 alloc_gen2roots; /* 212 4 */ | |
MVMCollectable * * gen2roots; /* 216 8 */ | |
MVMuint32 num_finalize; /* 224 4 */ | |
MVMuint32 alloc_finalize; /* 228 4 */ | |
MVMObject * * finalize; /* 232 8 */ | |
MVMuint32 num_finalizing; /* 240 4 */ | |
MVMuint32 alloc_finalizing; /* 244 4 */ | |
MVMObject * * finalizing; /* 248 8 */ | |
/* --- cacheline 4 boundary (256 bytes) --- */ | |
MVMGCPassedWork * gc_in_tray; /* 256 8 */ | |
MVMWorkThread * gc_work; /* 264 8 */ | |
MVMuint32 gc_work_size; /* 272 4 */ | |
MVMuint32 gc_work_count; /* 276 4 */ | |
MVMLexotic * * lexotic_cache; /* 280 8 */ | |
MVMuint32 lexotic_cache_size; /* 288 4 */ | |
MVMint32 sc_wb_disable_depth; /* 292 4 */ | |
MVMObject * compiling_scs; /* 296 8 */ | |
MVMObject * cur_dispatcher; /* 304 8 */ | |
MVMNativeCallbackCacheHead * native_callback_cache; /* 312 8 */ | |
/* --- cacheline 5 boundary (320 bytes) --- */ | |
/* --- cacheline 5 boundary (320 bytes) --- */ | |
MVMuint64 rand_state[2]; /* 320 16 */ | |
jmp_buf interp_jump; /* 336 200 */ | |
/* --- cacheline 8 boundary (512 bytes) was 24 bytes ago --- */ | |
MVMint64 * nfa_done; /* 536 8 */ | |
MVMint64 * nfa_curst; /* 544 8 */ | |
MVMint64 * nfa_nextst; /* 552 8 */ | |
MVMint64 nfa_alloc_states; /* 560 8 */ | |
MVMint64 * nfa_fates; /* 568 8 */ | |
/* --- cacheline 9 boundary (576 bytes) --- */ | |
MVMint64 nfa_fates_len; /* 576 8 */ | |
MVMint64 * nfa_longlit; /* 584 8 */ | |
MVMint64 nfa_longlit_len; /* 592 8 */ | |
MVMint64 * multi_dim_indices; /* 600 8 */ | |
MVMint64 num_multi_dim_indices; /* 608 8 */ | |
MVMint64 num_locks; /* 616 8 */ | |
MVMProfileThreadData * prof_data; /* 624 8 */ | |
/* size: 632, cachelines: 10, members: 62 */ | |
/* sum members: 628, holes: 1, sum holes: 4 */ | |
/* last cacheline: 56 bytes */ | |
}; | |
struct MVMArrayREPRData { | |
size_t elem_size; /* 0 8 */ | |
MVMuint8 slot_type; /* 8 1 */ | |
/* XXX 7 bytes hole, try to pack */ | |
MVMObject * elem_type; /* 16 8 */ | |
/* size: 24, cachelines: 1, members: 3 */ | |
/* sum members: 17, holes: 1, sum holes: 7 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMCArrayREPRData { | |
MVMint32 elem_size; /* 0 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMObject * elem_type; /* 8 8 */ | |
MVMint32 elem_kind; /* 16 4 */ | |
/* size: 24, cachelines: 1, members: 3 */ | |
/* sum members: 16, holes: 1, sum holes: 4 */ | |
/* padding: 4 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMSpeshCallInfo { | |
MVMCallsite * cs; /* 0 8 */ | |
MVMint8 arg_is_const[4]; /* 8 4 */ | |
/* XXX 4 bytes hole, try to pack */ | |
MVMSpeshFacts * arg_facts[4]; /* 16 32 */ | |
MVMSpeshIns * prepargs_ins; /* 48 8 */ | |
MVMSpeshIns * arg_ins[4]; /* 56 32 */ | |
/* --- cacheline 1 boundary (64 bytes) was 24 bytes ago --- */ | |
/* size: 88, cachelines: 2, members: 5 */ | |
/* sum members: 84, holes: 1, sum holes: 4 */ | |
/* last cacheline: 24 bytes */ | |
}; | |
struct MVMMultiDimArrayREPRData { | |
MVMint64 num_dimensions; /* 0 8 */ | |
size_t elem_size; /* 8 8 */ | |
MVMuint8 slot_type; /* 16 1 */ | |
/* XXX 7 bytes hole, try to pack */ | |
MVMObject * elem_type; /* 24 8 */ | |
/* size: 32, cachelines: 1, members: 4 */ | |
/* sum members: 25, holes: 1, sum holes: 7 */ | |
/* last cacheline: 32 bytes */ | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment