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);
|
const char *sym_table_find(sym_table_t *, sv_t);
|
||||||
void sym_table_free(sym_table_t *);
|
void sym_table_free(sym_table_t *);
|
||||||
|
|
||||||
|
// Debugging function: total memory used by symbol table.
|
||||||
|
u64 sym_table_cost(sym_table_t *);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Copyright (C) 2026 Aryadev Chavali
|
/* Copyright (C) 2026 Aryadev Chavali
|
||||||
|
|||||||
@@ -72,6 +72,19 @@ void sym_table_free(sym_table_t *table)
|
|||||||
memset(table, 0, sizeof(*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
|
/* Copyright (C) 2025, 2026 Aryadev Chavali
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
|||||||
Reference in New Issue
Block a user