mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 17:28:07 +00:00
pass over the aligner
This commit is contained in:
+12
-19
@@ -1078,26 +1078,19 @@ str8_list_concat_in_place(String8List *list, String8List *to_push)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node*
|
internal String8Node*
|
||||||
str8_list_push_aligner(Arena *arena, String8List *list, U64 min, U64 align){
|
str8_list_push_aligner(Arena *arena, String8List *list, U64 min, U64 align)
|
||||||
String8Node *node = push_array_no_zero(arena, String8Node, 1);
|
{
|
||||||
U64 new_size = list->total_size + min;
|
read_only local_persist U8 zeroes[64] = {0};
|
||||||
U64 increase_size = 0;
|
Assert(IsPow2OrZero(align));
|
||||||
if (align > 1){
|
U64 pad = Max(min, AlignPadPow2(list->total_size, align));
|
||||||
// NOTE(allen): assert is power of 2
|
if(pad < sizeof(zeroes))
|
||||||
Assert(((align - 1) & align) == 0);
|
{
|
||||||
U64 mask = align - 1;
|
return str8_list_push(arena, list, str8(zeroes, pad));
|
||||||
new_size += mask;
|
}
|
||||||
new_size &= (~mask);
|
else
|
||||||
increase_size = new_size - list->total_size;
|
{
|
||||||
|
return str8_list_push(arena, list, str8(push_array(arena, U8, pad), pad));
|
||||||
}
|
}
|
||||||
local_persist const U8 zeroes_buffer[64] = {0};
|
|
||||||
Assert(increase_size <= ArrayCount(zeroes_buffer));
|
|
||||||
SLLQueuePush(list->first, list->last, node);
|
|
||||||
list->node_count += 1;
|
|
||||||
list->total_size = new_size;
|
|
||||||
node->string.str = (U8*)zeroes_buffer;
|
|
||||||
node->string.size = increase_size;
|
|
||||||
return(node);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal String8Node*
|
internal String8Node*
|
||||||
|
|||||||
+1
-5
@@ -4118,11 +4118,7 @@ lnk_build_win32_header(Arena *arena, LNK_SymbolTable *symtab, LNK_Config *config
|
|||||||
}
|
}
|
||||||
|
|
||||||
// align image headers
|
// align image headers
|
||||||
{
|
str8_list_push_aligner(arena, &result, 0, config->file_align);
|
||||||
U64 image_headers_align_size = AlignPadPow2(result.total_size, config->file_align);
|
|
||||||
U8 *image_headers_align = push_array(arena, U8, image_headers_align_size);
|
|
||||||
str8_list_push(arena, &result, str8(image_headers_align, image_headers_align_size));
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// entry point
|
// entry point
|
||||||
|
|||||||
Reference in New Issue
Block a user