diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/minor/lsq.cc --- a/src/cpu/minor/lsq.cc Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/minor/lsq.cc Sun Nov 30 09:32:45 2014 +0000 @@ -1558,7 +1558,7 @@ if (isLoad) ret->allocate(); else - ret->dataDynamicArray(data); + ret->dataDynamic(data); return ret; } diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/o3/fetch_impl.hh --- a/src/cpu/o3/fetch_impl.hh Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/o3/fetch_impl.hh Sun Nov 30 09:32:45 2014 +0000 @@ -669,7 +669,7 @@ // Build packet here. PacketPtr data_pkt = new Packet(mem_req, MemCmd::ReadReq); - data_pkt->dataDynamicArray(new uint8_t[fetchBufferSize]); + data_pkt->dataDynamic(new uint8_t[fetchBufferSize]); fetchBufferPC[tid] = fetchBufferBlockPC; fetchBufferValid[tid] = false; diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/simple/timing.cc --- a/src/cpu/simple/timing.cc Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/simple/timing.cc Sun Nov 30 09:32:45 2014 +0000 @@ -271,7 +271,7 @@ { PacketPtr pkt; buildPacket(pkt, req, read); - pkt->dataDynamicArray(data); + pkt->dataDynamic(data); if (req->getFlags().isSet(Request::NO_ACCESS)) { assert(!dcache_pkt); pkt->makeResponse(); @@ -379,7 +379,7 @@ req->setPhys(req1->getPaddr(), req->getSize(), req1->getFlags(), dataMasterId()); PacketPtr pkt = new Packet(req, pkt1->cmd.responseCommand()); - pkt->dataDynamicArray(data); + pkt->dataDynamic(data); pkt1->dataStatic(data); pkt2->dataStatic(data + req1->getSize()); diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/testers/directedtest/InvalidateGenerator.cc --- a/src/cpu/testers/directedtest/InvalidateGenerator.cc Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/testers/directedtest/InvalidateGenerator.cc Sun Nov 30 09:32:45 2014 +0000 @@ -76,9 +76,7 @@ } else { panic("initiate was unexpectedly called\n"); } - uint8_t* dummyData = new uint8_t; - *dummyData = 0; - pkt->dataDynamic(dummyData); + pkt->allocate(); if (port->sendTimingReq(pkt)) { DPRINTF(DirectedTest, "initiating request - successful\n"); diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/testers/directedtest/SeriesRequestGenerator.cc --- a/src/cpu/testers/directedtest/SeriesRequestGenerator.cc Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/testers/directedtest/SeriesRequestGenerator.cc Sun Nov 30 09:32:45 2014 +0000 @@ -69,9 +69,7 @@ } PacketPtr pkt = new Packet(req, cmd); - uint8_t* dummyData = new uint8_t; - *dummyData = 0; - pkt->dataDynamic(dummyData); + pkt->allocate(); if (port->sendTimingReq(pkt)) { DPRINTF(DirectedTest, "initiating request - successful\n"); diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/testers/memtest/memtest.cc --- a/src/cpu/testers/memtest/memtest.cc Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/testers/memtest/memtest.cc Sun Nov 30 09:32:45 2014 +0000 @@ -327,7 +327,7 @@ blockAddr(req->getPaddr()), *result); PacketPtr pkt = new Packet(req, MemCmd::ReadReq); - pkt->dataDynamicArray(new uint8_t[req->getSize()]); + pkt->dataDynamic(new uint8_t[req->getSize()]); MemTestSenderState *state = new MemTestSenderState(result); pkt->senderState = state; @@ -349,7 +349,7 @@ PacketPtr pkt = new Packet(req, MemCmd::WriteReq); uint8_t *pkt_data = new uint8_t[req->getSize()]; - pkt->dataDynamicArray(pkt_data); + pkt->dataDynamic(pkt_data); memcpy(pkt_data, &data, req->getSize()); MemTestSenderState *state = new MemTestSenderState(result); pkt->senderState = state; diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/testers/networktest/networktest.cc --- a/src/cpu/testers/networktest/networktest.cc Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/testers/networktest/networktest.cc Sun Nov 30 09:32:45 2014 +0000 @@ -261,7 +261,7 @@ destination, req->getPaddr()); PacketPtr pkt = new Packet(req, requestType); - pkt->dataDynamicArray(new uint8_t[req->getSize()]); + pkt->dataDynamic(new uint8_t[req->getSize()]); pkt->senderState = NULL; sendPkt(pkt); diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/testers/rubytest/Check.cc --- a/src/cpu/testers/rubytest/Check.cc Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/testers/rubytest/Check.cc Sun Nov 30 09:32:45 2014 +0000 @@ -113,7 +113,7 @@ // despite the oddity of the 0 size (questionable if this should // even be allowed), a prefetch is still a read and as such needs // a place to store the result - uint8_t *data = new uint8_t; + uint8_t *data = new uint8_t[1]; pkt->dataDynamic(data); // push the subblock onto the sender state. The sequencer will @@ -192,7 +192,7 @@ // } PacketPtr pkt = new Packet(req, cmd); - uint8_t *writeData = new uint8_t; + uint8_t *writeData = new uint8_t[1]; *writeData = m_value + m_store_count; pkt->dataDynamic(writeData); @@ -246,7 +246,7 @@ req->setThreadContext(index, 0); PacketPtr pkt = new Packet(req, MemCmd::ReadReq); uint8_t *dataArray = new uint8_t[CHECK_SIZE]; - pkt->dataDynamicArray(dataArray); + pkt->dataDynamic(dataArray); // push the subblock onto the sender state. The sequencer will // update the subblock on the return diff -r beb775f5e121 -r 4b6d25498f4b src/cpu/testers/traffic_gen/generators.cc --- a/src/cpu/testers/traffic_gen/generators.cc Sun Nov 30 09:29:36 2014 +0000 +++ b/src/cpu/testers/traffic_gen/generators.cc Sun Nov 30 09:32:45 2014 +0000 @@ -62,7 +62,7 @@ PacketPtr pkt = new Packet(req, cmd); uint8_t* pkt_data = new uint8_t[req->getSize()]; - pkt->dataDynamicArray(pkt_data); + pkt->dataDynamic(pkt_data); if (cmd.isWrite()) { memset(pkt_data, 0xA, req->getSize()); diff -r beb775f5e121 -r 4b6d25498f4b src/mem/packet.hh --- a/src/mem/packet.hh Sun Nov 30 09:29:36 2014 +0000 +++ b/src/mem/packet.hh Sun Nov 30 09:32:45 2014 +0000 @@ -247,11 +247,9 @@ /// when the packet is destroyed? static const FlagsType STATIC_DATA = 0x00001000; /// The data pointer points to a value that should be freed when - /// the packet is destroyed. + /// the packet is destroyed. The pointer is assumed to be pointing + /// to an array, and delete [] is consequently called static const FlagsType DYNAMIC_DATA = 0x00002000; - /// the data pointer points to an array (thus delete []) needs to - /// be called on it rather than simply delete. - static const FlagsType ARRAY_DATA = 0x00004000; /// suppress the error if this packet encounters a functional /// access failure. static const FlagsType SUPPRESS_FUNC_ERROR = 0x00008000; @@ -813,7 +811,7 @@ void dataStatic(T *p) { - assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA|ARRAY_DATA)); + assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA)); data = (PacketDataPtr)p; flags.set(STATIC_DATA); } @@ -830,7 +828,7 @@ void dataStaticConst(const T *p) { - assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA|ARRAY_DATA)); + assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA)); data = const_cast(p); flags.set(STATIC_DATA); } @@ -841,22 +839,9 @@ */ template void - dataDynamicArray(T *p) - { - assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA|ARRAY_DATA)); - data = (PacketDataPtr)p; - flags.set(DYNAMIC_DATA|ARRAY_DATA); - } - - /** - * set the data pointer to a value that should have delete called - * on it. - */ - template - void dataDynamic(T *p) { - assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA|ARRAY_DATA)); + assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA)); data = (PacketDataPtr)p; flags.set(DYNAMIC_DATA); } @@ -938,12 +923,10 @@ void deleteData() { - if (flags.isSet(ARRAY_DATA)) + if (flags.isSet(DYNAMIC_DATA)) delete [] data; - else if (flags.isSet(DYNAMIC_DATA)) - delete data; - flags.clear(STATIC_DATA|DYNAMIC_DATA|ARRAY_DATA); + flags.clear(STATIC_DATA|DYNAMIC_DATA); data = NULL; } @@ -952,7 +935,7 @@ allocate() { assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA)); - flags.set(DYNAMIC_DATA|ARRAY_DATA); + flags.set(DYNAMIC_DATA); data = new uint8_t[getSize()]; }