ReadExReq,
ReadExResp,
LoadLockedReq,
- LoadLockedResp,
StoreCondReq,
StoreCondResp,
SwapReq,
* needed to process it. A specific subclass would be derived
* from this to carry state specific to a particular sending
* device. */
- class SenderState : public FastAlloc {
+ class SenderState {
public:
virtual ~SenderState() {}
};
* Object used to maintain state of a PrintReq. The senderState
* field of a PrintReq should always be of this type.
*/
- class PrintReqState : public SenderState {
+ class PrintReqState : public SenderState, public FastAlloc {
/** An entry in the label stack. */
class LabelStackEntry {
public:
/** Destructor. */
~Packet()
- { if (staticData || dynamicData) deleteData(); }
+ {
+ // If this is a request packet for which there's no response,
+ // delete the request object here, since the requester will
+ // never get the chance.
+ if (req && isRequest() && !needsResponse())
+ delete req;
+ if (staticData || dynamicData)
+ deleteData();
+ }
/** Reinitialize packet address and size from the associated
* Request object, and reset other fields that may have been