From 0648aeaa4238a12cac2457d329f42495c777eb88 Mon Sep 17 00:00:00 2001 From: Emery Berger Date: Tue, 16 Nov 2021 19:12:49 -0500 Subject: [PATCH] Removed open_addr_hashtable (no longer used). --- src/include/open_addr_hashtable-test.cpp | 63 ------------- src/include/open_addr_hashtable.hpp | 110 ----------------------- src/include/sampleheap.hpp | 1 - 3 files changed, 174 deletions(-) delete mode 100644 src/include/open_addr_hashtable-test.cpp delete mode 100644 src/include/open_addr_hashtable.hpp diff --git a/src/include/open_addr_hashtable-test.cpp b/src/include/open_addr_hashtable-test.cpp deleted file mode 100644 index c61cd0bb8..000000000 --- a/src/include/open_addr_hashtable-test.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#include -#include - -#include "open_addr_hashtable.hpp" - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t * Data, size_t size) { - open_addr_hashtable<4096> hash; - int i = 0; - while (i < size) { - switch (Data[i]) { - case 'G': - i++; - if (i + sizeof(void *) < size) { - printf("GET %ld\n", (long) Data[i]); - hash.get((void *) &Data[i]); - i += sizeof(void *); - } else { - i = size; - } - break; - case 'P': - i++; - if (i + 2 * sizeof(void *) < size) { - printf("PUT %ld %ld\n", (long) Data[i], (long) Data[i+sizeof(void *)]); - hash.put((void *) &Data[i], (void *) &Data[i+sizeof(void *)]); - i += 2 * sizeof(void *); - } else { - i = size; - } - break; - case 'R': - i++; - if (i + sizeof(void *) < size) { - hash.remove((void *) &Data[i]); - i += sizeof(void *); - } else { - i = size; - } - default: - i++; - break; - } - } - return 0; -} - -#if 1 -int -main(int argc, char * argv[]) -{ - char data[4096]; - memset(data, 0, 4096); - read(0, data, 4096); - auto result = fread(data, 4096, 1, stdin); - if (result == 0) { - printf("TESTING\n"); - LLVMFuzzerTestOneInput((const uint8_t *) data, strlen(data)); - } - return 0; -} -#endif diff --git a/src/include/open_addr_hashtable.hpp b/src/include/open_addr_hashtable.hpp deleted file mode 100644 index 1efa4f4f0..000000000 --- a/src/include/open_addr_hashtable.hpp +++ /dev/null @@ -1,110 +0,0 @@ -#pragma once - -/** - * open_addr_hashtable: simple hash table that does no allocation. - * Emery Berger - * https://emeryberger.com - **/ - -#include - -template -class open_addr_hashtable { - public: - open_addr_hashtable() { - static_assert((Size & (Size - 1UL)) == 0, "Size must be a power of two."); - } - - void *get(void *k) { - auto ind = find(k); - if (ind == -1) { - return nullptr; - } else { - return payload[ind].value; - } - } - - void put(void *k, void *v) { - auto h = hash1(k) & (Size - 1UL); - if (payload[h].key == nullptr) { - payload[h].key = k; - } - if (payload[h].key == k) { - payload[h].value = v; - return; - } - while (true) { - h = (h + hash2((void *)h)) & (Size - 1UL); - if (payload[h].key == nullptr) { - payload[h].key = k; - } - if (payload[h].key == k) { - payload[h].value = v; - return; - } - } - } - - // @return true iff the element was deleted. - bool remove(void *k) { - auto h = hash1(k) & (Size - 1UL); - if (payload[h].key == nullptr) { - // Not in the hash table. - return false; - } - if (payload[h].key == k) { - payload[h].key = nullptr; - payload[h].value = nullptr; - ; - return true; - } - while (true) { - h = (h + hash2((void *)h)) & (Size - 1UL); - if (payload[h].key == nullptr) { - return false; - } - if (payload[h].key == k) { - payload[h].key = nullptr; - payload[h].value = nullptr; - return true; - } - } - } - - private: - // Returns -1 if not found. - int find(void *k) { - unsigned long h = hash1(k) & (Size - 1UL); - if (payload[h].key == k) { - return h; - } - if (payload[h].key == nullptr) { - return -1; - } - while (true) { - h = (h + hash2((void *)h) + 1) & (Size - 1UL); - if (payload[h].key == k) { - return h; - } - if (payload[h].key == nullptr) { - return -1; - } - } - } - // Ideally, we'd use actual random numbers here, - // but these should still do the trick. - unsigned long hash1(void *addr) { - auto u = (uintptr_t)addr; - return (u ^ 0xAFB758AC3E937519); - } - unsigned long hash2(void *addr) { - auto u = (uintptr_t)addr; - return (u ^ 0x9493AFE261E39855); - } - struct payload_t { - payload_t() : key(nullptr), value(nullptr) {} - void *key; - void *value; - }; - payload_t payload[Size]; -}; diff --git a/src/include/sampleheap.hpp b/src/include/sampleheap.hpp index e002fbfec..4275101a6 100644 --- a/src/include/sampleheap.hpp +++ b/src/include/sampleheap.hpp @@ -23,7 +23,6 @@ #include "common.hpp" #include "mallocrecursionguard.hpp" -#include "open_addr_hashtable.hpp" #include "printf.h" #include "pywhere.hpp" #include "samplefile.hpp"