Some cleanups
authorClifford Wolf <clifford@clifford.at>
Sun, 28 Dec 2014 20:43:14 +0000 (21:43 +0100)
committerClifford Wolf <clifford@clifford.at>
Sun, 28 Dec 2014 20:43:14 +0000 (21:43 +0100)
kernel/hashlib.h
kernel/yosys.cc
kernel/yosys.h

index d363d68b5cb5014a329543e40bcc6ef3c70a7717..e5e76a1e1922aa20212f2054d06c3d29c482ebaf 100644 (file)
@@ -17,7 +17,7 @@
 
 namespace hashlib {
 
-#define HASHLIB_SIZE_FACTOR 3
+const int config_size_factor = 3;
 
 // The XOR version of DJB2
 // (traditionally 5381 is used as starting value for the djb2 hash)
@@ -161,9 +161,9 @@ class dict
                entries.clear();
 
                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);
-               new_size = new_size / HASHLIB_SIZE_FACTOR + 1;
+               new_size = new_size / config_size_factor + 1;
                entries.reserve(new_size);
 
                for (auto &it : other)
@@ -243,9 +243,9 @@ class dict
                if (free_list < 0)
                {
                        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);
-                       entries.resize(new_size / HASHLIB_SIZE_FACTOR + 1);
+                       entries.resize(new_size / config_size_factor + 1);
                        entries[i].udata = value;
                        entries[i].set_next_used(0);
                        counter++;
@@ -499,9 +499,9 @@ class pool
                entries.clear();
 
                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);
-               new_size = new_size / HASHLIB_SIZE_FACTOR + 1;
+               new_size = new_size / config_size_factor + 1;
                entries.reserve(new_size);
 
                for (auto &it : other)
@@ -581,9 +581,9 @@ class pool
                if (free_list < 0)
                {
                        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);
-                       entries.resize(new_size / HASHLIB_SIZE_FACTOR + 1);
+                       entries.resize(new_size / config_size_factor + 1);
                        entries[i].key = key;
                        entries[i].set_next_used(0);
                        counter++;
index 52bd066b77d47287e43a17d7b41f110df8306b69..0faca8d51ef5761a2aa282bce08200b06a53e7f9 100644 (file)
@@ -56,12 +56,14 @@ Tcl_Interp *yosys_tcl_interp = NULL;
 #endif
 
 bool memhasher_active = false;
-uint32_t memhasher_rng;
+uint32_t memhasher_rng = 123456;
 std::vector<void*> memhasher_store;
 
 void memhasher_on()
 {
+#ifdef __linux__
        memhasher_rng += time(NULL) << 16 ^ getpid();
+#endif
        memhasher_store.resize(0x10000);
        memhasher_active = true;
 }
index 50a15993944b87f41af2887ec20f1e25ed6ee89b..bbcbd5fed1b5b372718d7329722b1475d457965a 100644 (file)
 
 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::string;
 using hashlib::mkhash;