summaryrefslogtreecommitdiffstats
path: root/src/H5Idbg.c
diff options
context:
space:
mode:
authorDana Robinson <43805+derobins@users.noreply.github.com>2021-05-04 20:51:26 (GMT)
committerGitHub <noreply@github.com>2021-05-04 20:51:26 (GMT)
commitdbe7204085d46188414fd9d9e0dde48afcf30f28 (patch)
tree1a46a7ff0f36556da8ef551c1d31540f0e4e1a15 /src/H5Idbg.c
parentc7d45c205e78f141df76578ed72243d4445ac675 (diff)
downloadhdf5-dbe7204085d46188414fd9d9e0dde48afcf30f28.zip
hdf5-dbe7204085d46188414fd9d9e0dde48afcf30f28.tar.gz
hdf5-dbe7204085d46188414fd9d9e0dde48afcf30f28.tar.bz2
Hash table replacement for skip lists in ID code (#600)
* Committing clang-format changes * Brings over hash table code from Bitbucket * Can be switched between skip list and hash table implementation with H5_USE_ID_HASH_TABLE #define * Not yet updated to use iterate-safe delete * Fixes a warning and changes where the problematic test is commented out. * Adds mark-and-sweep flags and members * Final fixes for hash table ID code * Removes skip list ID code * Committing clang-format changes * Formatted source * Adds a comment about the mark-and-sweep scheme. Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Diffstat (limited to 'src/H5Idbg.c')
-rw-r--r--src/H5Idbg.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/H5Idbg.c b/src/H5Idbg.c
index 8894230..7b5eb5a 100644
--- a/src/H5Idbg.c
+++ b/src/H5Idbg.c
@@ -30,7 +30,6 @@
#include "H5Gprivate.h" /* Groups */
#include "H5Ipkg.h" /* IDs */
#include "H5RSprivate.h" /* Reference-counted strings */
-#include "H5SLprivate.h" /* Skip Lists */
#include "H5Tprivate.h" /* Datatypes */
#include "H5VLprivate.h" /* Virtual Object Layer */
@@ -86,6 +85,7 @@ H5I__id_dump_cb(void *_item, void H5_ATTR_UNUSED *_key, void *_udata)
HDfprintf(stderr, " id = %" PRIdHID "\n", info->id);
HDfprintf(stderr, " count = %u\n", info->count);
HDfprintf(stderr, " obj = 0x%8p\n", info->object);
+ HDfprintf(stderr, " marked = %d\n", info->marked);
/* Get the group location, so we get get the name */
switch (type) {
@@ -173,6 +173,9 @@ H5I_dump_ids_for_type(H5I_type_t type)
if (type_info) {
+ H5I_id_info_t *item = NULL;
+ H5I_id_info_t *tmp = NULL;
+
/* Header */
HDfprintf(stderr, " init_count = %u\n", type_info->init_count);
HDfprintf(stderr, " reserved = %u\n", type_info->cls->reserved);
@@ -182,7 +185,17 @@ H5I_dump_ids_for_type(H5I_type_t type)
/* List */
if (type_info->id_count > 0) {
HDfprintf(stderr, " List:\n");
- H5SL_iterate(type_info->ids, H5I__id_dump_cb, &type);
+ /* Normally we care about the callback's return value
+ * (H5I_ITER_CONT, etc.), but this is an iteration over all
+ * the IDs so we don't care.
+ *
+ * XXX: Update this to emit an error message on errors?
+ */
+ HDfprintf(stderr, " (HASH TABLE)\n");
+ HASH_ITER(hh, type_info->hash_table, item, tmp)
+ {
+ H5I__id_dump_cb((void *)item, NULL, (void *)&type);
+ }
}
}
else