symtable: sym_table_cost

Useful for figuring out the rough memory footprint (actually utilised)
by the symbol table.
This commit is contained in:
2026-02-11 07:56:34 +00:00
committed by oreodave
parent 47f33cb969
commit ff512986f8
2 changed files with 16 additions and 0 deletions

View File

@@ -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

View File

@@ -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