diff --git a/src/dasm_cache/dasm_cache.c b/src/dasm_cache/dasm_cache.c index e3ebddaa..85963a80 100644 --- a/src/dasm_cache/dasm_cache.c +++ b/src/dasm_cache/dasm_cache.c @@ -73,7 +73,10 @@ dasm_inst_array_idx_from_code_off__linear_scan(DASM_InstArray *array, U64 off) if(array->v[idx].code_off <= off && off < next_off) { result = idx; - break; + if(!(array->v[idx].flags & DASM_InstFlag_Decorative)) + { + break; + } } } return result; @@ -472,15 +475,19 @@ dasm_parse_thread__entry_point(void *p) if(params.style_flags & DASM_StyleFlag_SourceFilesNames && file->normal_full_path_string_idx != 0 && file_normalized_full_path.size != 0) { - DASM_Inst inst = {0}; + String8 inst_string = push_str8f(scratch.arena, "> %S", file_normalized_full_path); + DASM_Inst inst = {u32_from_u64_saturate(off), DASM_InstFlag_Decorative, 0, r1u64(inst_strings.total_size + inst_strings.node_count, + inst_strings.total_size + inst_strings.node_count + inst_string.size)}; dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst); - str8_list_pushf(scratch.arena, &inst_strings, "> %S", file_normalized_full_path); + str8_list_push(scratch.arena, &inst_strings, inst_string); } if(params.style_flags & DASM_StyleFlag_SourceFilesNames && file->normal_full_path_string_idx == 0) { - DASM_Inst inst = {0}; + String8 inst_string = str8_lit(">"); + DASM_Inst inst = {u32_from_u64_saturate(off), DASM_InstFlag_Decorative, 0, r1u64(inst_strings.total_size + inst_strings.node_count, + inst_strings.total_size + inst_strings.node_count + inst_string.size)}; dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst); - str8_list_pushf(scratch.arena, &inst_strings, ">"); + str8_list_push(scratch.arena, &inst_strings, inst_string); } last_file = file; } @@ -512,9 +519,11 @@ dasm_parse_thread__entry_point(void *p) String8 line_text = str8_skip_chop_whitespace(str8_substr(data, text_info.lines_ranges[line->line_num-1])); if(line_text.size != 0) { - DASM_Inst inst = {0}; + String8 inst_string = push_str8f(scratch.arena, "> %S", line_text); + DASM_Inst inst = {u32_from_u64_saturate(off), DASM_InstFlag_Decorative, 0, r1u64(inst_strings.total_size + inst_strings.node_count, + inst_strings.total_size + inst_strings.node_count + inst_string.size)}; dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst); - str8_list_pushf(scratch.arena, &inst_strings, "> %S", line_text); + str8_list_push(scratch.arena, &inst_strings, inst_string); } } } @@ -567,8 +576,8 @@ dasm_parse_thread__entry_point(void *p) } } String8 inst_string = push_str8f(scratch.arena, "%S%S%s%S", addr_part, code_bytes_part, udc.asm_buf, symbol_part); - DASM_Inst inst = {off, rel_voff, r1u64(inst_strings.total_size + inst_strings.node_count, - inst_strings.total_size + inst_strings.node_count + inst_string.size)}; + DASM_Inst inst = {u32_from_u64_saturate(off), 0, rel_voff, r1u64(inst_strings.total_size + inst_strings.node_count, + inst_strings.total_size + inst_strings.node_count + inst_string.size)}; dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst); str8_list_push(scratch.arena, &inst_strings, inst_string); diff --git a/src/dasm_cache/dasm_cache.h b/src/dasm_cache/dasm_cache.h index 5c588b56..bb3e33e8 100644 --- a/src/dasm_cache/dasm_cache.h +++ b/src/dasm_cache/dasm_cache.h @@ -42,10 +42,17 @@ struct DASM_Params //////////////////////////////// //~ rjf: Instruction Types +typedef U32 DASM_InstFlags; +enum +{ + DASM_InstFlag_Decorative = (1<<0), +}; + typedef struct DASM_Inst DASM_Inst; struct DASM_Inst { - U64 code_off; + U32 code_off; + DASM_InstFlags flags; U64 addr; Rng1U64 text_range; }; diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index 99931256..cf7f9ebe 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -12034,7 +12034,8 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ { for(DF_TextLineDasm2SrcInfoNode *n = dasm2src_list->first; n != 0; n = n->next) { - if(n->v.voff_range.min <= hovered_line_voff && hovered_line_voff < n->v.voff_range.max) + if(n->v.voff_range.min <= hovered_line_voff && + hovered_line_voff < n->v.voff_range.max) { line_info_line_num = n->v.pt.line; matches = 1; diff --git a/src/mule/mule_main.cpp b/src/mule/mule_main.cpp index b1a93972..7ea90255 100644 --- a/src/mule/mule_main.cpp +++ b/src/mule/mule_main.cpp @@ -1526,7 +1526,7 @@ extern "C"{ #endif static FORCE_INLINE void -basic_inlinee(void) +basic_inlinee(int inlinee_param_x, int inlinee_param_y, int inlinee_param_z) { OutputDebugStringA("A\n"); OutputDebugStringA("B\n"); @@ -1538,7 +1538,7 @@ static void basic_inline_tests(void) { OutputDebugStringA("{\n"); - basic_inlinee(); + basic_inlinee(12, 34, 56); OutputDebugStringA("}\n"); }