diff options
author | Dana Robinson <43805+derobins@users.noreply.github.com> | 2021-05-04 20:51:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-04 20:51:26 (GMT) |
commit | dbe7204085d46188414fd9d9e0dde48afcf30f28 (patch) | |
tree | 1a46a7ff0f36556da8ef551c1d31540f0e4e1a15 /src/H5Idbg.c | |
parent | c7d45c205e78f141df76578ed72243d4445ac675 (diff) | |
download | hdf5-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.c | 17 |
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 |