ruby: get rid of gems_common/util.hh and .cc and use stuff in src/base
authorNathan Binkert <nate@binkert.org>
Fri, 2 Apr 2010 18:20:32 +0000 (11:20 -0700)
committerNathan Binkert <nate@binkert.org>
Fri, 2 Apr 2010 18:20:32 +0000 (11:20 -0700)
29 files changed:
src/cpu/rubytest/CheckTable.cc
src/mem/gems_common/SConscript
src/mem/gems_common/util.cc [deleted file]
src/mem/gems_common/util.hh [deleted file]
src/mem/ruby/buffers/MessageBuffer.cc
src/mem/ruby/buffers/MessageBuffer.hh
src/mem/ruby/common/Debug.cc
src/mem/ruby/filters/BlockBloomFilter.cc
src/mem/ruby/filters/BulkBloomFilter.cc
src/mem/ruby/filters/GenericBloomFilter.cc
src/mem/ruby/filters/H3BloomFilter.cc
src/mem/ruby/filters/LSB_CountingBloomFilter.cc
src/mem/ruby/filters/MultiBitSelBloomFilter.cc
src/mem/ruby/filters/MultiGrainBloomFilter.cc
src/mem/ruby/filters/NonCountingBloomFilter.cc
src/mem/ruby/network/garnet/BaseGarnetNetwork.hh
src/mem/ruby/network/simple/PerfectSwitch.cc
src/mem/ruby/network/simple/SimpleNetwork.cc
src/mem/ruby/network/simple/Topology.cc
src/mem/ruby/profiler/Profiler.cc
src/mem/ruby/system/CacheMemory.cc
src/mem/ruby/system/DirectoryMemory.cc
src/mem/ruby/system/MachineID.hh
src/mem/ruby/system/MemoryControl.hh
src/mem/ruby/system/NodeID.hh
src/mem/ruby/system/PersistentTable.cc
src/mem/ruby/system/Sequencer.cc
src/mem/ruby/system/System.cc
src/mem/slicc/symbols/StateMachine.py

index 1674ca234185f02c4fa7a2175c305be097c9ff6d..3b94de315eb4c8968c9b0c31b5aa028260bed194 100644 (file)
@@ -27,6 +27,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "base/intmath.hh"
 #include "cpu/rubytest/Check.hh"
 #include "cpu/rubytest/CheckTable.hh"
 #include "cpu/rubytest/CheckTable.hh"
@@ -81,7 +82,7 @@ CheckTable::~CheckTable()
 void
 CheckTable::addCheck(const Address& address)
 {
-    if (log_int(CHECK_SIZE) != 0) {
+    if (floorLog2(CHECK_SIZE) != 0) {
         if (address.bitSelect(0, CHECK_SIZE_BITS - 1) != 0) {
             ERROR_MSG("Check not aligned");
         }
index 851aa412f63b944bdc5e0a40226259a0434aa786..86d8bb345b918c91f02d41a047f4d7ad81d93720 100644 (file)
@@ -33,6 +33,4 @@ Import('*')
 if not env['RUBY']:
     Return()
 
-Source('util.cc')
-
 TraceFlag('GemsCommon')
diff --git a/src/mem/gems_common/util.cc b/src/mem/gems_common/util.cc
deleted file mode 100644 (file)
index d7ce2e8..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 1999-2005 Mark D. Hill and David A. Wood
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met: redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer;
- * redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * $Id$
- */
-
-#include <cassert>
-#include <iomanip>
-#include <sstream>
-
-#include "mem/gems_common/util.hh"
-
-using namespace std;
-
-// Split a string into a head and tail strings on the specified
-// character.  Return the head and the string passed in is modified by
-// removing the head, leaving just the tail.
-
-string string_split(string& str, char split_character)
-{
-  string head = "";
-  string tail = "";
-
-  unsigned counter = 0;
-  while(counter < str.size()) {
-    if (str[counter] == split_character) {
-      counter++;
-      break;
-    } else {
-      head += str[counter];
-    }
-    counter++;
-  }
-
-  while(counter < str.size()) {
-    tail += str[counter];
-    counter++;
-  }
-  str = tail;
-  return head;
-}
-
-string bool_to_string(bool value)
-{
-  if (value) {
-    return "true";
-  } else {
-    return "false";
-  }
-}
-
-string int_to_string(int n, bool zero_fill, int width)
-{
-  ostringstream sstr;
-  if(zero_fill) {
-    sstr << setw(width) << setfill('0') << n;
-  } else {
-    sstr << n;
-  }
-  string str = sstr.str();
-  return str;
-}
-
-float string_to_float(string& str)
-{
-  stringstream sstr(str);
-  float ret;
-  sstr >> ret;
-  return ret;
-}
-
-bool string_to_bool(const string & str)
-{
-  string lower(str);
-  for (size_t i=0;i<str.length();i++)
-    lower[i] = tolower(str[i]);
-  if (lower == "true")
-    return true;
-  else if (lower == "false")
-    return false;
-  else
-    assert(0);
-
-  return false;
-}
-
-// Log functions
-int log_int(long long n)
-{
-  assert(n > 0);
-  int counter = 0;
-  while (n >= 2) {
-    counter++;
-    n = n>>(long long)(1);
-  }
-  return counter;
-}
-
-bool is_power_of_2(long long n)
-{
-  return (n == ((long long)(1) << log_int(n)));
-}
-
diff --git a/src/mem/gems_common/util.hh b/src/mem/gems_common/util.hh
deleted file mode 100644 (file)
index f5a86f3..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 1999-2005 Mark D. Hill and David A. Wood
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met: redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer;
- * redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * $Id$
- */
-
-#ifndef UTIL_H
-#define UTIL_H
-
-#include <string>
-
-std::string string_split(std::string& str, char split_character);
-std::string bool_to_string(bool value);
-std::string int_to_string(int n, bool zero_fill = false, int width = 0);
-float string_to_float(std::string& str);
-bool string_to_bool(const std::string & str);
-int log_int(long long n);
-bool is_power_of_2(long long n);
-
-// Min and Max functions (since they are extern inline, they are as
-// fast as macros)
-
-extern inline
-int max(int n1, int n2)
-{
-  if (n1 > n2) {
-    return n1;
-  } else {
-    return n2;
-  }
-}
-
-extern inline
-int min(int n1, int n2)
-{
-  if (n1 < n2) {
-    return n1;
-  } else {
-    return n2;
-  }
-}
-
-#endif //UTIL_H
index 086f92ab78f823a90bd114fcaaafa6cce4c313cc..e64e47cadcea91bb3ba48e42a1760466f3a4cc4c 100644 (file)
@@ -26,6 +26,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "base/cprintf.hh"
 #include "mem/ruby/buffers/MessageBuffer.hh"
 #include "mem/ruby/system/System.hh"
 
@@ -123,8 +124,8 @@ MessageBuffer::peekAtHeadOfQueue() const
     DEBUG_NEWLINE(QUEUE_COMP, MedPrio);
 
     DEBUG_MSG(QUEUE_COMP, MedPrio,
-              "Peeking at head of queue " + m_name + " time: "
-              + int_to_string(g_eventQueue_ptr->getTime()) + ".");
+              csprintf("Peeking at head of queue %s time: %d.",
+                       m_name, g_eventQueue_ptr->getTime()));
     assert(isReady());
 
     msg_ptr = m_prio_heap.peekMin().m_msgptr.ref();
@@ -151,8 +152,9 @@ void
 MessageBuffer::enqueue(const MsgPtr& message, Time delta)
 {
     DEBUG_NEWLINE(QUEUE_COMP, HighPrio);
-    DEBUG_MSG(QUEUE_COMP, HighPrio, "enqueue " + m_name + " time: "
-              + int_to_string(g_eventQueue_ptr->getTime()) + ".");
+    DEBUG_MSG(QUEUE_COMP, HighPrio,
+              csprintf("enqueue %s time: %d.", m_name,
+                       g_eventQueue_ptr->getTime()));
     DEBUG_EXPR(QUEUE_COMP, MedPrio, message);
     DEBUG_NEWLINE(QUEUE_COMP, HighPrio);
 
@@ -228,10 +230,9 @@ MessageBuffer::enqueue(const MsgPtr& message, Time delta)
     m_prio_heap.insert(thisNode);
 
     DEBUG_NEWLINE(QUEUE_COMP, HighPrio);
-    DEBUG_MSG(QUEUE_COMP, HighPrio, "enqueue " + m_name
-              + " with arrival_time " + int_to_string(arrival_time)
-              + " cur_time: " + int_to_string(g_eventQueue_ptr->getTime())
-              + ".");
+    DEBUG_MSG(QUEUE_COMP, HighPrio,
+              csprintf("enqueue %s with arrival_time %d cur_time: %d.",
+                       m_name, arrival_time, g_eventQueue_ptr->getTime()));
     DEBUG_EXPR(QUEUE_COMP, MedPrio, message);
     DEBUG_NEWLINE(QUEUE_COMP, HighPrio);
 
index 8fc86af9771eac0d6b9ea922621c58f114098997..6b567d70d837dadcc4360b2811f7cf5a0a97dffa 100644 (file)
@@ -38,7 +38,6 @@
 #include <string>
 
 #include "mem/gems_common/PrioHeap.hh"
-#include "mem/gems_common/util.hh"
 #include "mem/ruby/buffers/MessageBufferNode.hh"
 #include "mem/ruby/common/Consumer.hh"
 #include "mem/ruby/common/Global.hh"
index 2c1acc4ff3a635b863ab50202b0bb9c7aae1f27f..1bf7ae43bdf2543e7a2ac3ba473de8d130efe22e 100644 (file)
@@ -30,7 +30,6 @@
 #include <stdarg.h>
 
 #include "base/misc.hh"
-#include "mem/gems_common/util.hh"
 #include "mem/ruby/common/Debug.hh"
 #include "mem/ruby/common/Global.hh"
 #include "mem/ruby/eventqueue/RubyEventQueue.hh"
index 21d7921c647ccd17a8ddb67d92a4f31a2cb8f3a1..875a0d015bbe2892c687a0905e1784449da5b15b 100644 (file)
@@ -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);
 
index 47cc386cdde72ba28ea3ccffb6532e80de013f86..a03cba37b02e73dc5ba8364f3ed25363932a80b9 100644 (file)
@@ -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;
 
index 8d6b18e9e372690127a03b71625636cfd6af3c27..e04547fec0bb817bf4753f07e85c4ce7ebd3f300 100644 (file)
@@ -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);
index 8018c7e3891b1bc23e7ee4b233056c7d889ef1eb..d0a4f400de1f1e8f76244176722125f402c93c63 100644 (file)
@@ -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();
index 7ec927d6c992abf709dc208e3d9c8206f5cc3b05..029ce150115d7ecbd2b1000d92080a8d8244696f 100644 (file)
@@ -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();
index 90f299fb416dc1b8cb8e2b20514f4a8c02654074..466e3fccb4df9c765b575846a584181d7f99ed15 100644 (file)
  * 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();
index 24fcd7ead90e4a0fe418de262f41a168a3844c96..7b39764734a27718787c0a2537eeb288e598ab6a 100644 (file)
@@ -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);
index 2b39659278ef0b5f7a9e4b2a17b8cb96ad69afc1..909aaf76bff697e72bc9eca30bb032fe13e8563a 100644 (file)
@@ -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();
index 1c90c2ca2c6cc43ec8c02e8fcd5dcb043b56814e..a8eca11a42aec3451e18c35b838860535b55d018 100644 (file)
@@ -37,7 +37,6 @@
 #define BASEGARNETNETWORK_H
 
 #include "mem/ruby/network/garnet/NetworkHeader.hh"
-#include "mem/gems_common/util.hh"
 #include "mem/ruby/network/Network.hh"
 #include "params/BaseGarnetNetwork.hh"
 
index 4555ef2b357a04113b9142effc0c2643e0c2cff1..cf3a5af9cd268abe731d78ec07be3093bedd3153 100644 (file)
@@ -26,7 +26,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "mem/gems_common/util.hh"
 #include "mem/protocol/Protocol.hh"
 #include "mem/ruby/buffers/MessageBuffer.hh"
 #include "mem/ruby/network/simple/PerfectSwitch.hh"
index 2940f19a1d8e777e26cb2a7a65558c736a07d4f5..47404ad01d1f13641c79b3bed07d78a1892ca0d2 100644 (file)
@@ -75,10 +75,10 @@ SimpleNetwork::SimpleNetwork(const Params *p)
         m_toNetQueues[node].setSize(m_virtual_networks);
         m_fromNetQueues[node].setSize(m_virtual_networks);
         for (int j = 0; j < m_virtual_networks; j++) {
-            m_toNetQueues[node][j] = new MessageBuffer(
-                "toNet node "+int_to_string(node)+" j "+int_to_string(j));
-            m_fromNetQueues[node][j] = new MessageBuffer(
-                "fromNet node "+int_to_string(node)+" j "+int_to_string(j));
+            m_toNetQueues[node][j] =
+                new MessageBuffer(csprintf("toNet node %d j %d", node, j));
+            m_fromNetQueues[node][j] =
+                new MessageBuffer(csprintf("fromNet node %d j %d", node, j));
         }
     }
 }
index f2112925536b51ef5613a11a2724cb35d4e64b86..18618580a8e21046f2937df48f8a35c2f3813ddc 100644 (file)
@@ -26,7 +26,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "mem/gems_common/util.hh"
 #include "mem/protocol/MachineType.hh"
 #include "mem/protocol/Protocol.hh"
 #include "mem/protocol/TopologyType.hh"
index fc67f0052bf19757e9cc28e0aa2c5e24668540cf..aa23388eec84f38a08d8e56c85240585d7ea5ae1 100644 (file)
@@ -46,9 +46,9 @@
 #include <sys/resource.h>
 #include <sys/times.h>
 
+#include "base/str.hh"
 #include "mem/gems_common/Map.hh"
 #include "mem/gems_common/PrioHeap.hh"
-#include "mem/gems_common/util.hh"
 #include "mem/protocol/CacheMsg.hh"
 #include "mem/protocol/MachineType.hh"
 #include "mem/protocol/Protocol.hh"
@@ -360,9 +360,12 @@ Profiler::printStats(ostream& out, bool short_stats)
             int temp_int =
                 m_requestProfileMap_ptr->lookup(requestProfileKeys[i]);
             double percent = (100.0 * double(temp_int)) / double(m_requests);
-            while (requestProfileKeys[i] != "") {
-                out << setw(10) << string_split(requestProfileKeys[i], ':');
-            }
+            vector<string> items;
+            tokenize(items, requestProfileKeys[i], ':');
+            vector<string>::iterator i = items.begin();
+            vector<string>::iterator end = items.end();
+            for (; i != end; ++i)
+                out << setw(10) << *i;
             out << setw(11) << temp_int;
             out << setw(14) << percent << endl;
         }
index 1e188fb6006b7edc8c5d5a389f0256e9ce03a413..62aa1e25d96b710ba842a17549fd6df4d5307a83 100644 (file)
@@ -26,6 +26,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "base/intmath.hh"
 #include "mem/ruby/system/CacheMemory.hh"
 
 using namespace std;
@@ -60,7 +61,7 @@ CacheMemory::init()
     m_cache_num_sets = (m_cache_size / m_cache_assoc) /
         RubySystem::getBlockSizeBytes();
     assert(m_cache_num_sets > 1);
-    m_cache_num_set_bits = log_int(m_cache_num_sets);
+    m_cache_num_set_bits = floorLog2(m_cache_num_sets);
     assert(m_cache_num_set_bits > 0);
 
     if (m_policy == "PSEUDO_LRU")
index b3999fb3f91a76aad54b808e159bd71aeed27ef9..65b61c935dac921bdaa3043517fab735702e7ffa 100644 (file)
@@ -26,7 +26,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "mem/gems_common/util.hh"
+#include "base/intmath.hh"
 #include "mem/ruby/slicc_interface/RubySlicc_Util.hh"
 #include "mem/ruby/system/DirectoryMemory.hh"
 #include "mem/ruby/system/System.hh"
@@ -43,7 +43,7 @@ DirectoryMemory::DirectoryMemory(const Params *p)
 {
     m_version = p->version;
     m_size_bytes = p->size;
-    m_size_bits = log_int(m_size_bytes);
+    m_size_bits = floorLog2(m_size_bytes);
     m_num_entries = 0;
     m_use_map = p->use_map;
     m_map_levels = p->map_levels;
@@ -56,7 +56,7 @@ DirectoryMemory::init()
     m_num_entries = m_size_bytes / RubySystem::getBlockSizeBytes();
 
     if (m_use_map) {
-        int entry_bits = log_int(m_num_entries);
+        int entry_bits = floorLog2(m_num_entries);
         assert(entry_bits >= m_map_levels);
         m_sparseMemory = new SparseMemory(entry_bits, m_map_levels);
     } else {
@@ -67,7 +67,7 @@ DirectoryMemory::init()
     }
 
     m_num_directories++;
-    m_num_directories_bits = log_int(m_num_directories);
+    m_num_directories_bits = floorLog2(m_num_directories);
     m_total_size_bytes += m_size_bytes;
 
     if (m_numa_high_bit == 0) {
@@ -116,7 +116,7 @@ DirectoryMemory::printGlobalConfig(ostream & out)
             << endl;
     }
     out << "  total memory size bytes: " << m_total_size_bytes << endl;
-    out << "  total memory bits: " << log_int(m_total_size_bytes) << endl;
+    out << "  total memory bits: " << floorLog2(m_total_size_bytes) << endl;
 }
 
 uint64
index 7161962488e28236cb47d33aff4868e448859c4b..567d1f004e63f1079e15a911a1390d9f6e6ec928 100644 (file)
@@ -32,7 +32,7 @@
 #include <iostream>
 #include <string>
 
-#include "mem/gems_common/util.hh"
+#include "base/cprintf.hh"
 #include "mem/protocol/MachineType.hh"
 #include "mem/ruby/common/Global.hh"
 
@@ -45,7 +45,7 @@ struct MachineID
 inline std::string
 MachineIDToString(MachineID machine)
 {
-    return MachineType_to_string(machine.type)+"_"+int_to_string(machine.num);
+    return csprintf("%s_%d", MachineType_to_string(machine.type), machine.num);
 }
 
 inline bool
index 73646f623e5aa087fe03af9d2f0eb13e641f14b3..839fd007c15e9cb262e0a3ef42630f68cdf53226 100644 (file)
@@ -34,7 +34,6 @@
 #include <string>
 
 #include "mem/gems_common/Map.hh"
-#include "mem/gems_common/util.hh"
 #include "mem/protocol/MemoryMsg.hh"
 #include "mem/ruby/common/Address.hh"
 #include "mem/ruby/common/Consumer.hh"
index 4ce8d8a8d5cc424d118aa2068b5b790642c349b4..ed3486aaf94c731422f42313613f94827d48d52a 100644 (file)
@@ -31,7 +31,7 @@
 
 #include <string>
 
-#include "mem/gems_common/util.hh"
+#include "base/str.hh"
 #include "mem/ruby/common/Global.hh"
 
 typedef int NodeID;
@@ -39,7 +39,7 @@ typedef int NodeID;
 inline std::string
 NodeIDToString(NodeID node)
 {
-    return int_to_string(node);
+    return to_string(node);
 }
 
 #endif // __MEM_RUBY_SYSTEM_NODEID_HH__
index 64730ee2918dc9cd11ef37a6c896e78b8ea29d67..a8e6b0323fb05e7c57660a44882121d563a9a44c 100644 (file)
@@ -26,7 +26,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "mem/gems_common/util.hh"
 #include "mem/ruby/system/PersistentTable.hh"
 
 using namespace std;
index 42bf7ebb5c1169a9d77440a599ab02c48d7395f7..dd8cec96786878a5374ce0b7b67f245f06149ec3 100644 (file)
@@ -26,6 +26,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "base/str.hh"
 #include "cpu/rubytest/RubyTester.hh"
 #include "mem/gems_common/Map.hh"
 #include "mem/protocol/CacheMsg.hh"
index 418b31bf031d659c0aeb786f3911c6b2cb8e31f4..d28d74a89a6c97b56f6771011c13de7eeef9dee6 100644 (file)
@@ -26,6 +26,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "base/intmath.hh"
 #include "base/output.hh"
 #include "mem/ruby/buffers/MessageBuffer.hh"
 #include "mem/ruby/common/Address.hh"
@@ -63,14 +64,14 @@ RubySystem::RubySystem(const Params *p)
     m_clock = p->clock;
 
     m_block_size_bytes = p->block_size_bytes;
-    assert(is_power_of_2(m_block_size_bytes));
-    m_block_size_bits = log_int(m_block_size_bytes);
+    assert(isPowerOf2(m_block_size_bytes));
+    m_block_size_bits = floorLog2(m_block_size_bytes);
 
     m_memory_size_bytes = p->mem_size;
     if (m_memory_size_bytes == 0) {
         m_memory_size_bits = 0;
     } else {
-        m_memory_size_bits = log_int(m_memory_size_bytes);
+        m_memory_size_bits = floorLog2(m_memory_size_bytes);
     }
 
     m_network_ptr = p->network;
index a58c1e9c73f3c44509583388a52c0bb20c03cbcf..ff9bccf63051054e50378abb55dc617c5817c131 100644 (file)
@@ -330,12 +330,13 @@ static int m_num_controllers;
 #include <sstream>
 #include <string>
 
-#include "mem/ruby/common/Global.hh"
-#include "mem/ruby/slicc_interface/RubySlicc_includes.hh"
+#include "base/cprintf.hh"
 #include "mem/protocol/${ident}_Controller.hh"
 #include "mem/protocol/${ident}_State.hh"
 #include "mem/protocol/${ident}_Event.hh"
 #include "mem/protocol/Types.hh"
+#include "mem/ruby/common/Global.hh"
+#include "mem/ruby/slicc_interface/RubySlicc_includes.hh"
 #include "mem/ruby/system/System.hh"
 
 using namespace std;
@@ -526,7 +527,7 @@ if (m_buffer_size > 0) {
 
                 # set description (may be overriden later by port def)
                 code('''
-$vid->setDescription("[Version " + int_to_string(m_version) + ", ${ident}, name=${{var.c_ident}}]");
+$vid->setDescription("[Version " + to_string(m_version) + ", ${ident}, name=${{var.c_ident}}]");
 
 ''')
 
@@ -538,7 +539,7 @@ $vid->setDescription("[Version " + int_to_string(m_version) + ", ${ident}, name=
         # Set the queue descriptions
         code.insert_newline()
         for port in self.in_ports:
-            code('${{port.code}}.setDescription("[Version " + int_to_string(m_version) + ", $ident, $port]");')
+            code('${{port.code}}.setDescription("[Version " + to_string(m_version) + ", $ident, $port]");')
 
         # Initialize the transition profiling
         code.insert_newline()