WIP rework GSI and PSI symbol writer

This commit is contained in:
Nikita Smith committed 2026-04-06 12:04:32 -07:00
1 parent 883935d44e
commit d7cfd5f55a
8 files changed
+432 -568

No files matched your search

+30
View File
@@ -1211,6 +1211,32 @@ msf_stream_write_string_parallel(TP_Context *tp, MSF_Context *msf, MSF_StreamNum
return msf_stream_write_parallel(tp, msf, sn, string.str, string.size);
}
internal String8List
msf_raw_pages_from_sn(Arena *arena, MSF_Context *msf, MSF_StreamNumber sn)
{
String8List result = {0};
MSF_Stream *stream = msf_find_stream(msf, sn);
String8 acc = {0};
for EachNode(n, MSF_PageNode, stream->page_list.first) {
String8 p = msf_data_from_pn(msf->page_data_list, msf->page_size, n->pn);
if (acc.str + acc.size == p.str) {
acc.size += p.size;
} else {
str8_list_push(arena, &result, acc);
acc = p;
}
}
if (result.node_count && result.last->string.str + result.last->string.size == acc.str) {
result.last->string.size += acc.size;
} else {
str8_list_push(arena, &result, acc);
}
return result;
}
////////////////////////////////
internal MSF_UInt
@@ -1878,6 +1904,8 @@ msf_build(MSF_Context *msf)
internal String8List
msf_get_page_data_nodes(Arena *arena, MSF_Context *msf)
{
ProfBeginFunction();
String8List list; MemoryZeroStruct(&list);
U64 total_size = msf_get_save_size(msf);
@@ -1892,6 +1920,8 @@ msf_get_page_data_nodes(Arena *arena, MSF_Context *msf)
String8 data = str8(data_node->data, to_copy);
str8_list_push(arena, &list, data);
}
ProfEnd();
return list;
}
+2
View File
@@ -188,6 +188,8 @@ internal B32 msf_stream_write_parallel(TP_Context *tp, MSF_Context *msf, MSF_Str
#define msf_stream_write_array(m, s, v, c) msf_stream_write(m, s, (void*)(v), sizeof(*(v)) * (c))
#define msf_stream_write_struct(m, s, v ) msf_stream_write_array(m, s, v, 1)
internal String8List msf_raw_pages_from_sn(Arena *arena, MSF_Context *msf, MSF_StreamNumber sn);
internal MSF_UInt msf_count_pages(MSF_UInt page_size, U64 data_size);
internal MSF_PageNumber msf_get_page_count_cap(MSF_PageDataList page_data_list, MSF_UInt page_size);
internal MSF_UInt msf_get_fpm_interval_correct(MSF_UInt page_size);