symtable: sym_table_cost
Useful for figuring out the rough memory footprint (actually utilised) by the symbol table.
This commit is contained in:
@@ -24,6 +24,9 @@ void sym_table_init(sym_table_t *);
|
||||
const char *sym_table_find(sym_table_t *, sv_t);
|
||||
void sym_table_free(sym_table_t *);
|
||||
|
||||
// Debugging function: total memory used by symbol table.
|
||||
u64 sym_table_cost(sym_table_t *);
|
||||
|
||||
#endif
|
||||
|
||||
/* Copyright (C) 2026 Aryadev Chavali
|
||||
|
||||
@@ -72,6 +72,19 @@ void sym_table_free(sym_table_t *table)
|
||||
memset(table, 0, sizeof(*table));
|
||||
}
|
||||
|
||||
u64 sym_table_cost(sym_table_t *table)
|
||||
{
|
||||
if (!table || !table->count)
|
||||
return 0;
|
||||
else
|
||||
{
|
||||
u64 total_size = 0;
|
||||
for (u64 i = 0; i < table->capacity; ++i)
|
||||
total_size += ENTRY_GET(table, i).size;
|
||||
return total_size;
|
||||
}
|
||||
}
|
||||
|
||||
/* Copyright (C) 2025, 2026 Aryadev Chavali
|
||||
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
|
||||
Reference in New Issue
Block a user