diff --git a/src/plugins/intel_cpu/src/nodes/kernels/registers_pool.hpp b/src/plugins/intel_cpu/src/nodes/kernels/registers_pool.hpp index ed12fa71182..a052d2be3d5 100644 --- a/src/plugins/intel_cpu/src/nodes/kernels/registers_pool.hpp +++ b/src/plugins/intel_cpu/src/nodes/kernels/registers_pool.hpp @@ -30,6 +30,7 @@ using namespace dnnl::impl::cpu; class RegistersPool { public: using Ptr = std::shared_ptr; + using WeakPtr = std::weak_ptr; static constexpr int anyIdx = -1; /** @@ -65,12 +66,12 @@ public: return lhs.operator Xbyak::RegExp() + rhs; } void release() { - if (regPool) { - regPool->returnToPool(reg); + if (auto pool = regPool.lock()) { + pool->returnToPool(reg); regPool.reset(); } } - bool isInitialized() const { return static_cast(regPool); } + bool isInitialized() const { return !regPool.expired(); } private: void ensureValid() const { @@ -91,7 +92,7 @@ public: private: TReg reg; - RegistersPool::Ptr regPool; + RegistersPool::WeakPtr regPool; }; virtual ~RegistersPool() {