From 141f61d83a23096dcff20df704bdd734c520f535 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Fri, 2 Apr 2010 11:20:32 -0700 Subject: ruby: get rid of gems_common/util.hh and .cc and use stuff in src/base --- src/mem/ruby/filters/BlockBloomFilter.cc | 14 +++++++--- src/mem/ruby/filters/BulkBloomFilter.cc | 13 +++++++--- src/mem/ruby/filters/GenericBloomFilter.cc | 9 +++++-- src/mem/ruby/filters/H3BloomFilter.cc | 27 ++++++++++---------- src/mem/ruby/filters/LSB_CountingBloomFilter.cc | 14 +++++++--- src/mem/ruby/filters/MultiBitSelBloomFilter.cc | 34 ++++++++++++------------- src/mem/ruby/filters/MultiGrainBloomFilter.cc | 16 +++++++----- src/mem/ruby/filters/NonCountingBloomFilter.cc | 12 ++++++--- 8 files changed, 87 insertions(+), 52 deletions(-) (limited to 'src/mem/ruby/filters') 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 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 + +#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 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(); -- cgit v1.2.3