From 5b1a5b801501c11790f4d763a6c3f386c937b06b Mon Sep 17 00:00:00 2001 From: Greg Burd Date: Wed, 10 Apr 2024 15:48:53 -0400 Subject: [PATCH] fixes --- src/sparsemap.c | 6 ++---- tests/test.c | 15 ++++++++------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/sparsemap.c b/src/sparsemap.c index e4c17b5..866d8d1 100644 --- a/src/sparsemap.c +++ b/src/sparsemap.c @@ -488,14 +488,12 @@ __sm_chunk_map_rank(__sm_chunk_t *map, size_t *offset, size_t idx) } else if (flags == SM_PAYLOAD_MIXED) { sm_bitvec_t w = map->m_data[1 + __sm_chunk_map_get_position(map, i * SM_FLAGS_PER_INDEX_BYTE + j)]; if (idx > SM_BITS_PER_VECTOR) { - //uint64_t mask_offset = ~(UINT64_MAX >> (SM_BITS_PER_VECTOR - (*offset > 63 ? 63 : *offset))); uint64_t mask_offset = ~(UINT64_MAX >> (SM_BITS_PER_VECTOR - *offset)); idx -= SM_BITS_PER_VECTOR; ret += popcountll(w & mask_offset); *offset = (*offset > SM_BITS_PER_VECTOR) ? *offset - SM_BITS_PER_VECTOR : 0; } else { /* Create a mask for the range between offset and idx inclusive [*offset, idx]. */ - //uint64_t offset_mask = *offset > 63 ? 63 : (((uint64_t)1 << *offset) - 1); uint64_t offset_mask = (((uint64_t)1 << *offset) - 1); uint64_t idx_mask = idx >= 63 ? UINT64_MAX : ((uint64_t)1 << (idx + 1)) - 1; ret += popcountll(w & (idx_mask - offset_mask)); @@ -767,7 +765,7 @@ sparsemap(uint8_t *data, size_t size) void sparsemap_init(sparsemap_t *map, uint8_t *data, size_t size) { - map->m_data = (__sm_chunk_t*)data; + map->m_data = data; map->m_data_used = 0; map->m_capacity = size == 0 ? UINT64_MAX : size; sparsemap_clear(map); @@ -779,7 +777,7 @@ sparsemap_init(sparsemap_t *map, uint8_t *data, size_t size) void sparsemap_open(sparsemap_t *map, uint8_t *data, size_t data_size) { - map->m_data = (__sm_chunk_t*)data; + map->m_data = data; map->m_data_used = 0; map->m_capacity = data_size; } diff --git a/tests/test.c b/tests/test.c index 0e06dc2..467f5e4 100644 --- a/tests/test.c +++ b/tests/test.c @@ -609,7 +609,7 @@ test_api_span(const MunitParameter params[], void *data) //whats_set(map, 5000); located_at = sparsemap_span(map, 0, j); if (placed_at != located_at) - logf("i = %d, j = %d\tplaced_at %d\n", i, j, placed_at); + logf("a: i = %d, j = %d\tplaced_at %d located_at %d\n", i, j, placed_at, located_at); assert_true(located_at == placed_at); } } @@ -620,14 +620,15 @@ test_api_span(const MunitParameter params[], void *data) populate_map(map, 1024, 3 * 1024); placed_at = create_sequential_set_in_empty_map(map, amt, j); located_at = sparsemap_span(map, 0, j); - if (placed_at != located_at) - logf("i = %d, j = %d\tplaced_at %d\n", i, j, placed_at); - assert_true(located_at <= placed_at); - //TODO located_at = sparsemap_span(map, (placed_at < j ? 0 : placed_at / 2), i); - // assert_true(placed_at == located_at); + if (located_at >= placed_at) + logf("b: i = %d, j = %d\tplaced_at %d located_at %d\n", i, j, placed_at, located_at); + //assert_true(located_at >= placed_at); + located_at = sparsemap_span(map, (placed_at < j ? 0 : placed_at / 2), i); + assert_true(placed_at == located_at); } } -*/ + */ + return MUNIT_OK; }