ruby: makes some members non-static
authorNilay Vaish <nilay@cs.wisc.edu>
Tue, 2 Oct 2012 19:35:45 +0000 (14:35 -0500)
committerNilay Vaish <nilay@cs.wisc.edu>
Tue, 2 Oct 2012 19:35:45 +0000 (14:35 -0500)
This patch makes some of the members (profiler, network, memory vector)
of ruby system non-static.

src/mem/ruby/network/Network.cc
src/mem/ruby/network/Network.hh
src/mem/ruby/network/simple/Throttle.cc
src/mem/ruby/profiler/Profiler.cc
src/mem/ruby/system/System.cc
src/mem/ruby/system/System.hh

index 2aa120cdf9c3210805dca7462cf4c1d44efa5895..5c025db2a77105b277ad4bbd796eb2b966b7afe4 100644 (file)
 #include "mem/ruby/network/Topology.hh"
 #include "mem/ruby/system/System.hh"
 
+uint32_t Network::m_virtual_networks;
+uint32_t Network::m_control_msg_size;
+uint32_t Network::m_data_msg_size;
+
 Network::Network(const Params *p)
     : SimObject(p)
 {
@@ -58,7 +62,7 @@ Network::init()
     m_data_msg_size = RubySystem::getBlockSizeBytes() + m_control_msg_size;
 }
 
-int
+uint32_t
 Network::MessageSizeType_to_int(MessageSizeType size_type)
 {
     switch(size_type) {
index 8640ba9b1b60e8146ec371cbe1010a974a3d8f85..e9c5a98b72098dcf487334610f42929ba343b2a5 100644 (file)
@@ -64,8 +64,8 @@ class Network : public SimObject
 
     virtual void init();
 
-    int getNumberOfVirtualNetworks() { return m_virtual_networks; }
-    int MessageSizeType_to_int(MessageSizeType size_type);
+    static int getNumberOfVirtualNetworks() { return m_virtual_networks; }
+    static uint32_t MessageSizeType_to_int(MessageSizeType size_type);
 
     // returns the queue requested for the given component
     virtual MessageBuffer* getToNetQueue(NodeID id, bool ordered,
@@ -102,10 +102,10 @@ class Network : public SimObject
   protected:
     const std::string m_name;
     int m_nodes;
-    int m_virtual_networks;
+    static uint32_t m_virtual_networks;
     Topology* m_topology_ptr;
-    int m_control_msg_size;
-    int m_data_msg_size;
+    static uint32_t m_control_msg_size;
+    static uint32_t m_data_msg_size;
 };
 
 inline std::ostream&
index e4dc715278db69521f9822974b08e7ffc2d7a5c9..653791c297b24ccb867628a1156a440f2ea6d6bb 100644 (file)
@@ -260,8 +260,7 @@ network_message_to_size(NetworkMessage* net_msg_ptr)
 {
     assert(net_msg_ptr != NULL);
 
-    int size = RubySystem::getNetwork()->
-        MessageSizeType_to_int(net_msg_ptr->getMessageSize());
+    int size = Network::MessageSizeType_to_int(net_msg_ptr->getMessageSize());
     size *=  MESSAGE_SIZE_MULTIPLIER;
 
     // Artificially increase the size of broadcast messages
index e84eea72784874b8f9c11683d652b442ec0930f0..c4be8884c7f4e2a286150710388602ba2abf94b2 100644 (file)
@@ -460,7 +460,7 @@ Profiler::clearStats()
 
     m_delayedCyclesHistogram.clear();
     m_delayedCyclesNonPFHistogram.clear();
-    int size = RubySystem::getNetwork()->getNumberOfVirtualNetworks();
+    int size = Network::getNumberOfVirtualNetworks();
     m_delayedCyclesVCHistograms.resize(size);
     for (int i = 0; i < size; i++) {
         m_delayedCyclesVCHistograms[i].clear();
index 25857464dd66c57c8c637d63adcd2251a3b0f043..8c267654fd6a6677f500515b11678a3e0fe6d3f3 100644 (file)
@@ -51,10 +51,6 @@ int RubySystem::m_block_size_bits;
 uint64 RubySystem::m_memory_size_bytes;
 int RubySystem::m_memory_size_bits;
 
-Network* RubySystem::m_network_ptr;
-Profiler* RubySystem::m_profiler_ptr;
-MemoryVector* RubySystem::m_mem_vec_ptr;
-
 RubySystem::RubySystem(const Params *p)
     : ClockedObject(p)
 {
@@ -84,11 +80,9 @@ RubySystem::RubySystem(const Params *p)
         m_mem_vec_ptr->resize(m_memory_size_bytes);
     }
 
-    //
     // Print ruby configuration and stats at exit
-    //
-    RubyExitCallback* rubyExitCB = new RubyExitCallback(p->stats_filename);
-    registerExitCallback(rubyExitCB);
+    registerExitCallback(new RubyExitCallback(p->stats_filename, this));
+
     m_warmup_enabled = false;
     m_cooldown_enabled = false;
 }
@@ -636,5 +630,5 @@ void
 RubyExitCallback::process()
 {
     std::ostream *os = simout.create(stats_filename);
-    RubySystem::printStats(*os);
+    ruby_system->printStats(*os);
 }
index c0614cb1a42663f1a01153701a599ef2def709bb..e9e46fedf3fa77b0752f27a3b773d182b6096388 100644 (file)
@@ -81,7 +81,7 @@ class RubySystem : public ClockedObject
     Cycles getTime() const { return curCycle(); }
 
     // Public Methods
-    static Network*
+    Network*
     getNetwork()
     {
         assert(m_network_ptr != NULL);
@@ -95,14 +95,14 @@ class RubySystem : public ClockedObject
         return m_profiler_ptr;
     }
 
-    static MemoryVector*
+    MemoryVector*
     getMemoryVector()
     {
         assert(m_mem_vec_ptr != NULL);
         return m_mem_vec_ptr;
     }
 
-    static void printStats(std::ostream& out);
+    void printStats(std::ostream& out);
     void clearStats() const;
 
     uint64 getInstructionCount(int thread) { return 1; }
@@ -150,13 +150,13 @@ class RubySystem : public ClockedObject
     static int m_block_size_bits;
     static uint64 m_memory_size_bytes;
     static int m_memory_size_bits;
-    static Network* m_network_ptr;
 
+    Network* m_network_ptr;
     MemoryControl *m_memory_controller;
 
   public:
-    static Profiler* m_profiler_ptr;
-    static MemoryVector* m_mem_vec_ptr;
+    Profiler* m_profiler_ptr;
+    MemoryVector* m_mem_vec_ptr;
     std::vector<AbstractController*> m_abs_cntrl_vec;
     bool m_warmup_enabled;
     bool m_cooldown_enabled;
@@ -176,16 +176,18 @@ class RubyExitCallback : public Callback
 {
   private:
     std::string stats_filename;
+    RubySystem *ruby_system;
 
   public:
     virtual ~RubyExitCallback() {}
 
-    RubyExitCallback(const std::string& _stats_filename)
+    RubyExitCallback(const std::string& _stats_filename, RubySystem *system)
     {
         stats_filename = _stats_filename;
+        ruby_system = system;
     }
 
-    virtual void process();
+    void process();
 };
 
 #endif // __MEM_RUBY_SYSTEM_SYSTEM_HH__