mem: Track the MemObject owner in MasterPort and SlavePort.

These types are much more tied to MemObjects and the gem5 memory
protocol than the Port or BaseMasterPort and BaseSlavePort classes.

Change-Id: I36bc8c75b9c74d28ee8b65dbcbf742cd41135742
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17032
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
Gabe Black
2019-03-06 21:37:01 -08:00
parent b5046b2e51
commit a73069c87d
2 changed files with 25 additions and 25 deletions

View File

@@ -51,8 +51,8 @@
#include "base/trace.hh"
#include "mem/mem_object.hh"
Port::Port(const std::string &_name, MemObject& _owner, PortID _id)
: portName(_name), id(_id), owner(_owner)
Port::Port(const std::string &_name, PortID _id)
: portName(_name), id(_id)
{
}
@@ -60,9 +60,8 @@ Port::~Port()
{
}
BaseMasterPort::BaseMasterPort(const std::string& name, MemObject* owner,
PortID _id)
: Port(name, *owner, _id), _baseSlavePort(NULL)
BaseMasterPort::BaseMasterPort(const std::string &name, PortID _id)
: Port(name, _id), _baseSlavePort(NULL)
{
}
@@ -86,9 +85,8 @@ BaseMasterPort::isConnected() const
return _baseSlavePort != NULL;
}
BaseSlavePort::BaseSlavePort(const std::string& name, MemObject* owner,
PortID _id)
: Port(name, *owner, _id), _baseMasterPort(NULL)
BaseSlavePort::BaseSlavePort(const std::string &name, PortID _id)
: Port(name, _id), _baseMasterPort(NULL)
{
}
@@ -115,8 +113,8 @@ BaseSlavePort::isConnected() const
/**
* Master port
*/
MasterPort::MasterPort(const std::string& name, MemObject* owner, PortID _id)
: BaseMasterPort(name, owner, _id), _slavePort(NULL)
MasterPort::MasterPort(const std::string& name, MemObject* _owner, PortID _id)
: BaseMasterPort(name, _id), _slavePort(NULL), owner(*_owner)
{
}
@@ -219,8 +217,8 @@ MasterPort::printAddr(Addr a)
/**
* Slave port
*/
SlavePort::SlavePort(const std::string& name, MemObject* owner, PortID id)
: BaseSlavePort(name, owner, id), _masterPort(NULL)
SlavePort::SlavePort(const std::string& name, MemObject* _owner, PortID id)
: BaseSlavePort(name, id), _masterPort(NULL), owner(*_owner)
{
}

View File

@@ -76,17 +76,13 @@ class Port
*/
const PortID id;
/** A reference to the MemObject that owns this port. */
MemObject& owner;
/**
* Abstract base class for ports
*
* @param _name Port name including the owners name
* @param _owner The MemObject that is the structural owner of this port
* @param _id A port identifier for vector ports
*/
Port(const std::string& _name, MemObject& _owner, PortID _id);
Port(const std::string& _name, PortID _id);
/**
* Virtual destructor due to inheritance.
@@ -119,8 +115,7 @@ class BaseMasterPort : public Port
BaseSlavePort* _baseSlavePort;
BaseMasterPort(const std::string& name, MemObject* owner,
PortID id = InvalidPortID);
BaseMasterPort(const std::string& name, PortID id=InvalidPortID);
virtual ~BaseMasterPort();
public:
@@ -143,8 +138,7 @@ class BaseSlavePort : public Port
BaseMasterPort* _baseMasterPort;
BaseSlavePort(const std::string& name, MemObject* owner,
PortID id = InvalidPortID);
BaseSlavePort(const std::string& name, PortID id=InvalidPortID);
virtual ~BaseSlavePort();
public:
@@ -173,10 +167,14 @@ class MasterPort : public BaseMasterPort
SlavePort* _slavePort;
protected:
MemObject& owner;
public:
MasterPort(const std::string& name, MemObject* owner,
PortID id = InvalidPortID);
MasterPort(const std::string& name, MemObject* _owner,
PortID id=InvalidPortID);
virtual ~MasterPort();
/**
@@ -350,10 +348,14 @@ class SlavePort : public BaseSlavePort
MasterPort* _masterPort;
protected:
MemObject& owner;
public:
SlavePort(const std::string& name, MemObject* owner,
PortID id = InvalidPortID);
SlavePort(const std::string& name, MemObject* _owner,
PortID id=InvalidPortID);
virtual ~SlavePort();
/**