mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-13 07:32:23 -07:00
moved unsigned range list to base math
This commit is contained in:
@@ -591,6 +591,30 @@ u32_from_rgba(Vec4F32 rgba)
|
||||
////////////////////////////////
|
||||
//~ rjf: List Type Functions
|
||||
|
||||
internal void
|
||||
rng1u64_list_push(Arena *arena, Rng1U64List *list, Rng1U64 rng)
|
||||
{
|
||||
Rng1U64Node *n = push_array(arena, Rng1U64Node, 1);
|
||||
MemoryCopyStruct(&n->v, &rng);
|
||||
SLLQueuePush(list->first, list->last, n);
|
||||
list->count += 1;
|
||||
}
|
||||
|
||||
internal Rng1U64Array
|
||||
rng1u64_array_from_list(Arena *arena, Rng1U64List *list)
|
||||
{
|
||||
Rng1U64Array arr = {0};
|
||||
arr.count = list->count;
|
||||
arr.v = push_array_no_zero(arena, Rng1U64, arr.count);
|
||||
U64 idx = 0;
|
||||
for(Rng1U64Node *n = list->first; n != 0; n = n->next)
|
||||
{
|
||||
arr.v[idx] = n->v;
|
||||
idx += 1;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
internal void
|
||||
rng1s64_list_push(Arena *arena, Rng1S64List *list, Rng1S64 rng)
|
||||
{
|
||||
|
||||
@@ -329,6 +329,28 @@ union Rng2S64
|
||||
////////////////////////////////
|
||||
//~ rjf: List Types
|
||||
|
||||
typedef struct Rng1U64Node Rng1U64Node;
|
||||
struct Rng1U64Node
|
||||
{
|
||||
Rng1U64Node *next;
|
||||
Rng1U64 v;
|
||||
};
|
||||
|
||||
typedef struct Rng1U64List Rng1U64List;
|
||||
struct Rng1U64List
|
||||
{
|
||||
U64 count;
|
||||
Rng1U64Node *first;
|
||||
Rng1U64Node *last;
|
||||
};
|
||||
|
||||
typedef struct Rng1U64Array Rng1U64Array;
|
||||
struct Rng1U64Array
|
||||
{
|
||||
Rng1U64 *v;
|
||||
U64 count;
|
||||
};
|
||||
|
||||
typedef struct Rng1S64Node Rng1S64Node;
|
||||
struct Rng1S64Node
|
||||
{
|
||||
@@ -643,6 +665,9 @@ internal U32 u32_from_rgba(Vec4F32 rgba);
|
||||
////////////////////////////////
|
||||
//~ rjf: List Type Functions
|
||||
|
||||
internal void rng1u64_list_push(Arena *arena, Rng1U64List *list, Rng1U64 rng);
|
||||
internal Rng1U64Array rng1u64_array_from_list(Arena *arena, Rng1U64List *list);
|
||||
|
||||
internal void rng1s64_list_push(Arena *arena, Rng1S64List *list, Rng1S64 rng);
|
||||
internal Rng1S64Array rng1s64_array_from_list(Arena *arena, Rng1S64List *list);
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "base_core.c"
|
||||
#include "base_strings.c"
|
||||
#include "base_arena.c"
|
||||
#include "base_math.c"
|
||||
#include "base_arrays.c"
|
||||
#include "base_bit_array.c"
|
||||
#include "base_crc32.c"
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "base_core.h"
|
||||
#include "base_strings.h"
|
||||
#include "base_arena.h"
|
||||
#include "base_math.h"
|
||||
#include "base_arrays.h"
|
||||
#include "base_blake3.h"
|
||||
#include "base_bit_array.h"
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
internal void
|
||||
rng_1u64_list_push_node(Rng1U64List *list, Rng1U64Node *node)
|
||||
{
|
||||
SLLQueuePush(list->first, list->last, node);
|
||||
++list->count;
|
||||
}
|
||||
|
||||
internal Rng1U64Node *
|
||||
rng_1u64_list_push(Arena *arena, Rng1U64List *list, Rng1U64 range)
|
||||
{
|
||||
Rng1U64Node *node = push_array(arena, Rng1U64Node, 1);
|
||||
node->v = range;
|
||||
rng_1u64_list_push_node(list, node);
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#pragma once
|
||||
|
||||
typedef struct Rng1U64Node
|
||||
{
|
||||
struct Rng1U64Node *next;
|
||||
Rng1U64 v;
|
||||
} Rng1U64Node;
|
||||
|
||||
typedef struct Rng1U64List
|
||||
{
|
||||
U64 count;
|
||||
Rng1U64Node *first;
|
||||
Rng1U64Node *last;
|
||||
} Rng1U64List;
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal void rng_1u64_list_push_node(Rng1U64List *list, Rng1U64Node *node);
|
||||
internal Rng1U64Node * rng_1u64_list_push(Arena *arena, Rng1U64List *list, Rng1U64 range);
|
||||
|
||||
@@ -2127,7 +2127,7 @@ cv_c13_parse_inline_binary_annots(Arena *arena,
|
||||
code_ranges.last->v.max = parent_voff + code_offset_hi;
|
||||
} else {
|
||||
// append range
|
||||
rng_1u64_list_push(arena, &code_ranges, rng_1u64(parent_voff + code_offset_lo, parent_voff + code_offset_hi));
|
||||
rng1u64_list_push(arena, &code_ranges, rng_1u64(parent_voff + code_offset_lo, parent_voff + code_offset_hi));
|
||||
|
||||
// update last code range in file
|
||||
if (file_last) {
|
||||
@@ -2226,13 +2226,13 @@ cv_make_defined_range_list_from_gaps(Arena *arena, Rng1U64 defrange, CV_LvarAddr
|
||||
|
||||
if (gap_count == 0) {
|
||||
// no gaps, push whole range
|
||||
rng_1u64_list_push(arena, &result, defrange);
|
||||
rng1u64_list_push(arena, &result, defrange);
|
||||
} else {
|
||||
U64 cursor = defrange.min;
|
||||
for (U64 gap_idx = 0; gap_idx < gap_count; ++gap_idx) {
|
||||
// make range
|
||||
Rng1U64 range = rng_1u64(cursor, cursor + gaps[gap_idx].off);
|
||||
rng_1u64_list_push(arena, &result, range);
|
||||
rng1u64_list_push(arena, &result, range);
|
||||
|
||||
// advance
|
||||
cursor = defrange.min + gaps[gap_idx].off + gaps[gap_idx].len;
|
||||
@@ -2245,7 +2245,7 @@ cv_make_defined_range_list_from_gaps(Arena *arena, Rng1U64 defrange, CV_LvarAddr
|
||||
U64 last_range_byte_size = dim_1u64(defrange) - (last_gap.off + last_gap.len);
|
||||
if (last_range_byte_size) {
|
||||
Rng1U64 last_range = rng_1u64(defrange.min + last_gap.off + last_gap.len, defrange.max);
|
||||
rng_1u64_list_push(arena, &result, last_range);
|
||||
rng1u64_list_push(arena, &result, last_range);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4704,7 +4704,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
||||
scope->container_proc = scope_stack->proc;
|
||||
scope->parent = scope_stack->scope;
|
||||
SLLQueuePush_N(scope_stack->scope->first_child, scope_stack->scope->last_child, scope, next_sibling);
|
||||
rng_1u64_list_push(arena, &scope->ranges, virt_range);
|
||||
rng1u64_list_push(arena, &scope->ranges, virt_range);
|
||||
|
||||
#if 0
|
||||
if (scope->parent) {
|
||||
@@ -4753,7 +4753,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
||||
}
|
||||
|
||||
Rng1U64List ranges = {0};
|
||||
rng_1u64_list_push(arena, &ranges, rng_1u64(data_voff, data_voff + data_size));
|
||||
rng1u64_list_push(arena, &ranges, rng_1u64(data_voff, data_voff + data_size));
|
||||
|
||||
RDIB_Location location = rdib_make_location_addr_byte_stream(ranges, bytecode);
|
||||
rdib_location_list_push(arena, &locations, location);
|
||||
@@ -4787,7 +4787,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
||||
rdib_bytecode_push_op(arena, &bytecode, RDI_EvalOp_TLSOff, thread32->tls_off);
|
||||
|
||||
Rng1U64List ranges = {0};
|
||||
rng_1u64_list_push(arena, &ranges, rng_1u64(0, max_U64));
|
||||
rng1u64_list_push(arena, &ranges, rng_1u64(0, max_U64));
|
||||
|
||||
RDIB_Location location = rdib_make_location_addr_byte_stream(ranges, bytecode);
|
||||
rdib_location_list_push(arena, &locations, location);
|
||||
@@ -4868,7 +4868,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
||||
if (scope_stack->scope != 0) {
|
||||
SLLQueuePush_N(scope_stack->scope->first_child, scope_stack->scope->last_child, root_scope, next_sibling);
|
||||
}
|
||||
rng_1u64_list_push(arena, &root_scope->ranges, virt_range);
|
||||
rng1u64_list_push(arena, &root_scope->ranges, virt_range);
|
||||
|
||||
// fill out procedure
|
||||
proc->link_flags = symbol.kind == CV_SymKind_GPROC32 ? RDI_LinkFlag_External : 0;
|
||||
@@ -4951,7 +4951,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
|
||||
if (scope_stack->scope != 0) {
|
||||
SLLQueuePush_N(scope_stack->scope->first_child, scope_stack->scope->last_child, root_scope, next_sibling);
|
||||
}
|
||||
rng_1u64_list_push(arena, &root_scope->ranges, virt_range);
|
||||
rng1u64_list_push(arena, &root_scope->ranges, virt_range);
|
||||
|
||||
// fill out procedure
|
||||
thunk->name = name;
|
||||
|
||||
@@ -4985,11 +4985,11 @@ rdib_init_input(Arena *arena)
|
||||
null_unit->line_table = null_line_table;
|
||||
|
||||
// Scope
|
||||
rng_1u64_list_push(arena, &null_scope->ranges, rng_1u64(0,max_U32));
|
||||
rng1u64_list_push(arena, &null_scope->ranges, rng_1u64(0,max_U32));
|
||||
|
||||
// Location
|
||||
RDIB_Location null_loc = {0};
|
||||
rng_1u64_list_push(arena, &null_loc.ranges, rng_1u64(0,0));
|
||||
rng1u64_list_push(arena, &null_loc.ranges, rng_1u64(0,0));
|
||||
RDIB_LocationList null_loc_list = {0};
|
||||
rdib_location_list_push(arena, &null_loc_list, null_loc);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user