cpu, mem: Changing AtomicOpFunctor* for unique_ptr<AtomicOpFunctor>
authorJordi Vaquero <jordi.vaquero@metempsy.com>
Tue, 10 Sep 2019 22:11:27 +0000 (00:11 +0200)
committerJordi Vaquero <jordi.vaquero@metempsy.com>
Mon, 23 Sep 2019 12:32:08 +0000 (12:32 +0000)
commite5a82da26e29560f3e7121b600a12f8acd6a5a3f
tree31786646cd8b077b48381303d0352959038e15a2
parenta56ab04598be184427e8dd71fa5528b016738306
cpu, mem: Changing AtomicOpFunctor* for unique_ptr<AtomicOpFunctor>

This change is based on modify the way we move the AtomicOpFunctor*
through gem5 in order to mantain proper ownership of the object and
ensuring its destruction when it is no longer used.

Doing that we fix at the same time a memory leak in Request.hh
where we were assigning a new AtomicOpFunctor* without destroying the
previous one.

This change creates a new type AtomicOpFunctor_ptr as a
std::unique_ptr<AtomicOpFunctor> and move its ownership as needed. Except
for its only usage when AtomicOpFunc() is called.

Change-Id: Ic516f9d8217cb1ae1f0a19500e5da0336da9fd4f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20919
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
18 files changed:
src/arch/generic/memhelpers.hh
src/base/types.hh
src/cpu/base_dyn_inst.hh
src/cpu/checker/cpu.hh
src/cpu/exec_context.hh
src/cpu/minor/exec_context.hh
src/cpu/minor/lsq.cc
src/cpu/minor/lsq.hh
src/cpu/o3/cpu.hh
src/cpu/o3/lsq.hh
src/cpu/o3/lsq_impl.hh
src/cpu/simple/atomic.cc
src/cpu/simple/atomic.hh
src/cpu/simple/base.hh
src/cpu/simple/exec_context.hh
src/cpu/simple/timing.cc
src/cpu/simple/timing.hh
src/mem/request.hh