Some cleanups

This commit is contained in:
Clifford Wolf 2014-12-28 21:43:14 +01:00
parent 8773fd5897
commit 2ad131764f
3 changed files with 20 additions and 11 deletions

View File

@ -17,7 +17,7 @@
namespace hashlib { namespace hashlib {
#define HASHLIB_SIZE_FACTOR 3 const int config_size_factor = 3;
// The XOR version of DJB2 // The XOR version of DJB2
// (traditionally 5381 is used as starting value for the djb2 hash) // (traditionally 5381 is used as starting value for the djb2 hash)
@ -161,9 +161,9 @@ class dict
entries.clear(); entries.clear();
counter = other.size(); counter = other.size();
int new_size = hashtable_size(HASHLIB_SIZE_FACTOR * counter); int new_size = hashtable_size(config_size_factor * counter);
hashtable.resize(new_size); hashtable.resize(new_size);
new_size = new_size / HASHLIB_SIZE_FACTOR + 1; new_size = new_size / config_size_factor + 1;
entries.reserve(new_size); entries.reserve(new_size);
for (auto &it : other) for (auto &it : other)
@ -243,9 +243,9 @@ class dict
if (free_list < 0) if (free_list < 0)
{ {
int i = entries.size(); int i = entries.size();
int new_size = hashtable_size(HASHLIB_SIZE_FACTOR * entries.size()); int new_size = hashtable_size(config_size_factor * entries.size());
hashtable.resize(new_size); hashtable.resize(new_size);
entries.resize(new_size / HASHLIB_SIZE_FACTOR + 1); entries.resize(new_size / config_size_factor + 1);
entries[i].udata = value; entries[i].udata = value;
entries[i].set_next_used(0); entries[i].set_next_used(0);
counter++; counter++;
@ -499,9 +499,9 @@ class pool
entries.clear(); entries.clear();
counter = other.size(); counter = other.size();
int new_size = hashtable_size(HASHLIB_SIZE_FACTOR * counter); int new_size = hashtable_size(config_size_factor * counter);
hashtable.resize(new_size); hashtable.resize(new_size);
new_size = new_size / HASHLIB_SIZE_FACTOR + 1; new_size = new_size / config_size_factor + 1;
entries.reserve(new_size); entries.reserve(new_size);
for (auto &it : other) for (auto &it : other)
@ -581,9 +581,9 @@ class pool
if (free_list < 0) if (free_list < 0)
{ {
int i = entries.size(); int i = entries.size();
int new_size = hashtable_size(HASHLIB_SIZE_FACTOR * entries.size()); int new_size = hashtable_size(config_size_factor * entries.size());
hashtable.resize(new_size); hashtable.resize(new_size);
entries.resize(new_size / HASHLIB_SIZE_FACTOR + 1); entries.resize(new_size / config_size_factor + 1);
entries[i].key = key; entries[i].key = key;
entries[i].set_next_used(0); entries[i].set_next_used(0);
counter++; counter++;

View File

@ -56,12 +56,14 @@ Tcl_Interp *yosys_tcl_interp = NULL;
#endif #endif
bool memhasher_active = false; bool memhasher_active = false;
uint32_t memhasher_rng; uint32_t memhasher_rng = 123456;
std::vector<void*> memhasher_store; std::vector<void*> memhasher_store;
void memhasher_on() void memhasher_on()
{ {
#ifdef __linux__
memhasher_rng += time(NULL) << 16 ^ getpid(); memhasher_rng += time(NULL) << 16 ^ getpid();
#endif
memhasher_store.resize(0x10000); memhasher_store.resize(0x10000);
memhasher_active = true; memhasher_active = true;
} }

View File

@ -124,7 +124,14 @@
YOSYS_NAMESPACE_BEGIN YOSYS_NAMESPACE_BEGIN
#include "kernel/hashlib.h" #ifdef HASHLIB_H
# undef HASHLIB_H
# include "kernel/hashlib.h"
#else
# include "kernel/hashlib.h"
# undef HASHLIB_H
#endif
using std::vector; using std::vector;
using std::string; using std::string;
using hashlib::mkhash; using hashlib::mkhash;