mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-04 12:58:41 +00:00
parallelize section garbage collection
currently we tag pointers to solve ABA problem however if the list has more than max_U16 items, the tag will overflow and cause serious issues. To fix this, we need to use 64-bit tags together with 128-bit interlocked compare-exchange intrinsic
This commit is contained in:
committed by
Ryan Fleury
parent
cc8fdc6c6f
commit
5a12513306
@@ -268,7 +268,7 @@ THREAD_POOL_TASK_FUNC(lnk_obj_initer)
|
||||
COFF_SectionHeader *sect_header = &coff_section_table[sect_idx];
|
||||
String8 sect_name = str8_cstring_capped(sect_header->name, sect_header->name + sizeof(sect_header->name));
|
||||
if (str8_starts_with(sect_name, str8_lit(".debug$"))) {
|
||||
sect_header->flags |= LNK_SECTION_FLAG_DEBUG_INFO;
|
||||
sect_header->flags |= LNK_SECTION_FLAG_DEBUG;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -286,7 +286,7 @@ THREAD_POOL_TASK_FUNC(lnk_obj_initer)
|
||||
CV_Symbol comp_symbol = {0};
|
||||
for EachIndex(sect_idx, header.section_count_no_null) {
|
||||
COFF_SectionHeader *sect_header = &coff_section_table[sect_idx];
|
||||
if (sect_header->flags & LNK_SECTION_FLAG_DEBUG_INFO) {
|
||||
if (sect_header->flags & LNK_SECTION_FLAG_DEBUG) {
|
||||
String8 name = str8_cstring_capped(sect_header->name, sect_header->name+sizeof(sect_header->name));
|
||||
if (str8_match(name, str8_lit(".debug$S"), 0)) {
|
||||
Temp temp = temp_begin(scratch.arena);
|
||||
|
||||
Reference in New Issue
Block a user