From e0a021005d4765e22b8c026b6a66fda4a0b17c00 Mon Sep 17 00:00:00 2001 From: Korey Sewell Date: Wed, 23 Feb 2011 16:30:45 -0500 Subject: inorder: cache packet handling -use a pointer to CacheReqPacket instead of PacketPtr so correct destructors get called on packet deletion - make sure to delete the packet if the cache blocks the sendTiming request or for some reason we dont use the packet - dont overwrite memory requests since in the worst case an instruction will be replaying a request so no need to keep allocating a new request - we dont use retryPkt so delete it - fetch code was split out already, so just assert that this is a memory reference inst. and that the staticInst is available --- src/cpu/inorder/resources/cache_unit.hh | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/cpu/inorder/resources/cache_unit.hh') diff --git a/src/cpu/inorder/resources/cache_unit.hh b/src/cpu/inorder/resources/cache_unit.hh index 097b6fa7a..1aab099e9 100644 --- a/src/cpu/inorder/resources/cache_unit.hh +++ b/src/cpu/inorder/resources/cache_unit.hh @@ -225,7 +225,7 @@ class CacheRequest : public ResourceRequest public: CacheRequest(CacheUnit *cres) : ResourceRequest(cres), memReq(NULL), reqData(NULL), - dataPkt(NULL), retryPkt(NULL), memAccComplete(false), + dataPkt(NULL), memAccComplete(false), memAccPending(false), tlbStall(false), splitAccess(false), splitAccessNum(-1), split2ndAccess(false), fetchBufferFill(false) @@ -233,9 +233,8 @@ class CacheRequest : public ResourceRequest virtual ~CacheRequest() { - if (reqData && !splitAccess) { + if (reqData && !splitAccess) delete [] reqData; - } } void setRequest(DynInstPtr _inst, int stage_num, int res_idx, int slot_num, @@ -249,14 +248,12 @@ class CacheRequest : public ResourceRequest void clearRequest() { - if (reqData && !splitAccess) { + if (reqData && !splitAccess) delete [] reqData; - } memReq = NULL; reqData = NULL; dataPkt = NULL; - retryPkt = NULL; memAccComplete = false; memAccPending = false; tlbStall = false; @@ -292,8 +289,7 @@ class CacheRequest : public ResourceRequest MemCmd::Command pktCmd; RequestPtr memReq; PacketDataPtr reqData; - PacketPtr dataPkt; - PacketPtr retryPkt; + CacheReqPacket *dataPkt; bool memAccComplete; bool memAccPending; -- cgit v1.2.3