summaryrefslogtreecommitdiff
path: root/src/mem/ruby/filters
diff options
context:
space:
mode:
authorNathan Binkert <nate@binkert.org>2010-04-02 11:20:32 -0700
committerNathan Binkert <nate@binkert.org>2010-04-02 11:20:32 -0700
commit141f61d83a23096dcff20df704bdd734c520f535 (patch)
treeee2383d721a039bb056bd6442a7241aa305d187e /src/mem/ruby/filters
parentf1c3f3044b73d890ffdfdd113b3b37ae2809d21b (diff)
downloadgem5-141f61d83a23096dcff20df704bdd734c520f535.tar.xz
ruby: get rid of gems_common/util.hh and .cc and use stuff in src/base
Diffstat (limited to 'src/mem/ruby/filters')
-rw-r--r--src/mem/ruby/filters/BlockBloomFilter.cc14
-rw-r--r--src/mem/ruby/filters/BulkBloomFilter.cc13
-rw-r--r--src/mem/ruby/filters/GenericBloomFilter.cc9
-rw-r--r--src/mem/ruby/filters/H3BloomFilter.cc27
-rw-r--r--src/mem/ruby/filters/LSB_CountingBloomFilter.cc14
-rw-r--r--src/mem/ruby/filters/MultiBitSelBloomFilter.cc34
-rw-r--r--src/mem/ruby/filters/MultiGrainBloomFilter.cc16
-rw-r--r--src/mem/ruby/filters/NonCountingBloomFilter.cc12
8 files changed, 87 insertions, 52 deletions
diff --git a/src/mem/ruby/filters/BlockBloomFilter.cc b/src/mem/ruby/filters/BlockBloomFilter.cc
index 21d7921c6..875a0d015 100644
--- a/src/mem/ruby/filters/BlockBloomFilter.cc
+++ b/src/mem/ruby/filters/BlockBloomFilter.cc
@@ -26,6 +26,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "base/intmath.hh"
+#include "base/str.hh"
#include "mem/gems_common/Map.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/filters/BlockBloomFilter.hh"
@@ -34,11 +36,17 @@ using namespace std;
BlockBloomFilter::BlockBloomFilter(string str)
{
- string tail(str);
- string head = string_split(tail, '_');
+ string head, tail;
+
+#ifndef NDEBUG
+ bool success =
+#endif
+ split_first(str, head, tail, '_');
+
+ assert(success);
m_filter_size = atoi(head.c_str());
- m_filter_size_bits = log_int(m_filter_size);
+ m_filter_size_bits = floorLog2(m_filter_size);
m_filter.setSize(m_filter_size);
diff --git a/src/mem/ruby/filters/BulkBloomFilter.cc b/src/mem/ruby/filters/BulkBloomFilter.cc
index 47cc386cd..a03cba37b 100644
--- a/src/mem/ruby/filters/BulkBloomFilter.cc
+++ b/src/mem/ruby/filters/BulkBloomFilter.cc
@@ -26,6 +26,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "base/intmath.hh"
+#include "base/str.hh"
#include "mem/gems_common/Map.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/filters/BulkBloomFilter.hh"
@@ -34,11 +36,16 @@ using namespace std;
BulkBloomFilter::BulkBloomFilter(string str)
{
- string tail(str);
- string head = string_split(tail, '_');
+ string head, tail;
+
+#ifndef NDEBUG
+ bool success =
+#endif
+ split_first(str, head, tail, '_');
+ assert(success);
m_filter_size = atoi(head.c_str());
- m_filter_size_bits = log_int(m_filter_size);
+ m_filter_size_bits = floorLog2(m_filter_size);
// split the filter bits in half, c0 and c1
m_sector_bits = m_filter_size_bits - 1;
diff --git a/src/mem/ruby/filters/GenericBloomFilter.cc b/src/mem/ruby/filters/GenericBloomFilter.cc
index 8d6b18e9e..e04547fec 100644
--- a/src/mem/ruby/filters/GenericBloomFilter.cc
+++ b/src/mem/ruby/filters/GenericBloomFilter.cc
@@ -26,6 +26,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "base/str.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/common/Global.hh"
#include "mem/ruby/filters/BlockBloomFilter.hh"
@@ -41,8 +42,12 @@ using namespace std;
GenericBloomFilter::GenericBloomFilter(string config)
{
- string tail(config);
- string head = string_split(tail,'_');
+ string head, tail;
+#ifndef NDEBUG
+ bool success =
+#endif
+ split_first(config, head, tail, '_');
+ assert(success);
if (head == "LSB_Counting" ) {
m_filter = new LSB_CountingBloomFilter(tail);
diff --git a/src/mem/ruby/filters/H3BloomFilter.cc b/src/mem/ruby/filters/H3BloomFilter.cc
index 8018c7e38..d0a4f400d 100644
--- a/src/mem/ruby/filters/H3BloomFilter.cc
+++ b/src/mem/ruby/filters/H3BloomFilter.cc
@@ -26,6 +26,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "base/intmath.hh"
+#include "base/str.hh"
#include "mem/gems_common/Map.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/filters/H3BloomFilter.hh"
@@ -378,29 +380,26 @@ H3BloomFilter::H3BloomFilter(string str)
adds_list[4] = 7777;
adds_list[5] = 65931;
- string tail(str);
- string head = string_split(tail, '_');
+ vector<string> items;
+ tokenize(items, str, '_');
+ assert(items.size() == 3);
// head contains filter size, tail contains bit offset from block number
- m_filter_size = atoi(head.c_str());
+ m_filter_size = atoi(items[0].c_str());
+ m_num_hashes = atoi(items[1].c_str());
- head = string_split(tail, '_');
- m_num_hashes = atoi(head.c_str());
-
- if(tail == "Regular") {
+ if (items[2] == "Regular") {
isParallel = false;
- } else if (tail == "Parallel") {
+ } else if (items[2] == "Parallel") {
isParallel = true;
} else {
- cout << "ERROR: Incorrect config string for MultiHash Bloom! :"
- << str << endl;
- assert(0);
+ panic("ERROR: Incorrect config string for MultiHash 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();
diff --git a/src/mem/ruby/filters/LSB_CountingBloomFilter.cc b/src/mem/ruby/filters/LSB_CountingBloomFilter.cc
index 7ec927d6c..029ce1501 100644
--- a/src/mem/ruby/filters/LSB_CountingBloomFilter.cc
+++ b/src/mem/ruby/filters/LSB_CountingBloomFilter.cc
@@ -26,6 +26,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "base/intmath.hh"
+#include "base/str.hh"
#include "mem/gems_common/Map.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/filters/LSB_CountingBloomFilter.hh"
@@ -34,14 +36,18 @@ using namespace std;
LSB_CountingBloomFilter::LSB_CountingBloomFilter(string str)
{
- string tail(str);
- string head = string_split(tail, ':');
+ string head, tail;
+#ifndef NDEBUG
+ bool success =
+#endif
+ split_first(str, head, tail, '_');
+ assert(success);
m_filter_size = atoi(head.c_str());
- m_filter_size_bits = log_int(m_filter_size);
+ m_filter_size_bits = floorLog2(m_filter_size);
m_count = atoi(tail.c_str());
- m_count_bits = log_int(m_count);
+ m_count_bits = floorLog2(m_count);
m_filter.setSize(m_filter_size);
clear();
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();
diff --git a/src/mem/ruby/filters/MultiGrainBloomFilter.cc b/src/mem/ruby/filters/MultiGrainBloomFilter.cc
index 24fcd7ead..7b3976473 100644
--- a/src/mem/ruby/filters/MultiGrainBloomFilter.cc
+++ b/src/mem/ruby/filters/MultiGrainBloomFilter.cc
@@ -26,6 +26,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "base/intmath.hh"
+#include "base/str.hh"
#include "mem/gems_common/Map.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/filters/MultiGrainBloomFilter.hh"
@@ -34,19 +36,21 @@ using namespace std;
MultiGrainBloomFilter::MultiGrainBloomFilter(string str)
{
- string tail(str);
-
- // split into the 2 filter sizes
- string head = string_split(tail, '_');
+ string head, tail;
+#ifndef NDEBUG
+ bool success =
+#endif
+ split_first(str, head, tail, '_');
+ assert(success);
// head contains size of 1st bloom filter, tail contains size of
// 2nd bloom filter
m_filter_size = atoi(head.c_str());
- m_filter_size_bits = log_int(m_filter_size);
+ m_filter_size_bits = floorLog2(m_filter_size);
m_page_filter_size = atoi(tail.c_str());
- m_page_filter_size_bits = log_int(m_page_filter_size);
+ m_page_filter_size_bits = floorLog2(m_page_filter_size);
m_filter.setSize(m_filter_size);
m_page_filter.setSize(m_page_filter_size);
diff --git a/src/mem/ruby/filters/NonCountingBloomFilter.cc b/src/mem/ruby/filters/NonCountingBloomFilter.cc
index 2b3965927..909aaf76b 100644
--- a/src/mem/ruby/filters/NonCountingBloomFilter.cc
+++ b/src/mem/ruby/filters/NonCountingBloomFilter.cc
@@ -26,6 +26,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "base/intmath.hh"
+#include "base/str.hh"
#include "mem/gems_common/Map.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/filters/NonCountingBloomFilter.hh"
@@ -34,13 +36,17 @@ using namespace std;
NonCountingBloomFilter::NonCountingBloomFilter(string str)
{
- string tail(str);
- string head = string_split(tail, '_');
+ string head, tail;
+#ifndef NDEBUG
+ bool success =
+#endif
+ split_first(str, head, tail, '_');
+ assert(success);
// head contains filter size, tail contains bit offset from block number
m_filter_size = atoi(head.c_str());
m_offset = atoi(tail.c_str());
- m_filter_size_bits = log_int(m_filter_size);
+ m_filter_size_bits = floorLog2(m_filter_size);
m_filter.setSize(m_filter_size);
clear();