summaryrefslogtreecommitdiff
path: root/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/ruby/filters/MultiBitSelBloomFilter.cc')
-rw-r--r--src/mem/ruby/filters/MultiBitSelBloomFilter.cc34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/mem/ruby/filters/MultiBitSelBloomFilter.cc b/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
index 90f299fb4..466e3fccb 100644
--- a/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
+++ b/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
@@ -26,6 +26,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include <vector>
+
+#include "base/intmath.hh"
+#include "base/str.hh"
#include "mem/gems_common/Map.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/filters/MultiBitSelBloomFilter.hh"
@@ -34,32 +38,28 @@ using namespace std;
MultiBitSelBloomFilter::MultiBitSelBloomFilter(string str)
{
- string tail(str);
- string head = string_split(tail, '_');
+ vector<string> items;
+ tokenize(items, str, '_');
+ assert(items.size() == 4);
// head contains filter size, tail contains bit offset from block number
- m_filter_size = atoi(head.c_str());
-
- head = string_split(tail, '_');
- m_num_hashes = atoi(head.c_str());
-
- head = string_split(tail, '_');
- m_skip_bits = atoi(head.c_str());
+ m_filter_size = atoi(items[0].c_str());
+ m_num_hashes = atoi(items[1].c_str());
+ m_skip_bits = atoi(items[2].c_str());
- if(tail == "Regular") {
+ if (items[3] == "Regular") {
isParallel = false;
- } else if (tail == "Parallel") {
+ } else if (items[3] == "Parallel") {
isParallel = true;
} else {
- cout << "ERROR: Incorrect config string for MultiBitSel Bloom! :"
- << str << endl;
- assert(0);
+ panic("ERROR: Incorrect config string for MultiBitSel Bloom! :%s",
+ str);
}
- m_filter_size_bits = log_int(m_filter_size);
+ m_filter_size_bits = floorLog2(m_filter_size);
- m_par_filter_size = m_filter_size/m_num_hashes;
- m_par_filter_size_bits = log_int(m_par_filter_size);
+ m_par_filter_size = m_filter_size / m_num_hashes;
+ m_par_filter_size_bits = floorLog2(m_par_filter_size);
m_filter.setSize(m_filter_size);
clear();