Ruby: Rename RubyPort::sendTiming to avoid overriding base class
authorAndreas Hansson <andreas.hansson@arm.com>
Fri, 2 Mar 2012 14:16:50 +0000 (09:16 -0500)
committerAndreas Hansson <andreas.hansson@arm.com>
Fri, 2 Mar 2012 14:16:50 +0000 (09:16 -0500)
This patch renames the sendTiming member function in the RubyPort to
avoid inadvertently hiding Port::sendTiming (discovered through some
rather painful debugging). The RubyPort does, in fact, rely on the
functionality of the queued port and the implementation merely
schedules a send the next cycle. The new name for the member function
is sendNextCycle to better reflect this behaviour.

In the unlikely event that we ever shift to using C++11 the member
functions in Port should have a "final" identifier to prevent any
overriding in derived classes.

src/mem/ruby/system/RubyPort.cc
src/mem/ruby/system/RubyPort.hh

index c55b4a2c2d3ff42ffdbc1b1e0a92a872b67d19ec..aff129b50464403678ea65765e2c2d0ef64a0d53 100644 (file)
@@ -188,7 +188,7 @@ RubyPort::M5Port::recvTiming(PacketPtr pkt)
                 "Request for address 0x%#x is assumed to be a pio request\n",
                 pkt->getAddr());
 
-        return ruby_port->pio_port.sendTiming(pkt);
+        return ruby_port->pio_port.sendNextCycle(pkt);
     }
 
     assert(Address(pkt->getAddr()).getOffset() + pkt->getSize() <=
@@ -637,7 +637,7 @@ RubyPort::M5Port::hitCallback(PacketPtr pkt)
     // turn packet around to go back to requester if response expected
     if (needsResponse) {
         DPRINTF(RubyPort, "Sending packet back over port\n");
-        sendTiming(pkt);
+        sendNextCycle(pkt);
     } else {
         delete pkt;
     }
@@ -645,7 +645,7 @@ RubyPort::M5Port::hitCallback(PacketPtr pkt)
 }
 
 bool
-RubyPort::M5Port::sendTiming(PacketPtr pkt)
+RubyPort::M5Port::sendNextCycle(PacketPtr pkt)
 {
     //minimum latency, must be > 0
     schedSendTiming(pkt, curTick() + (1 * g_eventQueue_ptr->getClock()));
@@ -653,7 +653,7 @@ RubyPort::M5Port::sendTiming(PacketPtr pkt)
 }
 
 bool
-RubyPort::PioPort::sendTiming(PacketPtr pkt)
+RubyPort::PioPort::sendNextCycle(PacketPtr pkt)
 {
     //minimum latency, must be > 0
     schedSendTiming(pkt, curTick() + (1 * g_eventQueue_ptr->getClock()));
@@ -690,6 +690,6 @@ RubyPort::ruby_eviction_callback(const Address& address)
     Request req(address.getAddress(), 0, 0, Request::funcMasterId);
     for (CpuPortIter it = cpu_ports.begin(); it != cpu_ports.end(); it++) {
         Packet *pkt = new Packet(&req, MemCmd::InvalidationReq, -1);
-        (*it)->sendTiming(pkt);
+        (*it)->sendNextCycle(pkt);
     }
 }
index 0d84ec216d41cbef3267ff99a03f0f0bc26c1e73..4aa132131d0094becb275d16535ff2efdedc4cfe 100644 (file)
@@ -57,7 +57,7 @@ class RubyPort : public MemObject
       public:
         M5Port(const std::string &_name, RubyPort *_port,
                RubySystem*_system, bool _access_phys_mem);
-        bool sendTiming(PacketPtr pkt);
+        bool sendNextCycle(PacketPtr pkt);
         void hitCallback(PacketPtr pkt);
         void evictionCallback(const Address& address);
         unsigned deviceBlockSize() const;
@@ -88,7 +88,7 @@ class RubyPort : public MemObject
 
       public:
         PioPort(const std::string &_name, RubyPort *_port);
-        bool sendTiming(PacketPtr pkt);
+        bool sendNextCycle(PacketPtr pkt);
 
       protected:
         virtual bool recvTiming(PacketPtr pkt);