From d28f570ce19e436f379be03f550daaf272092828 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Fri, 5 Oct 2018 18:31:28 +0900 Subject: [PATCH] [coco] Remove Op::dispose (#1761) 'dispose' was introduced as a mean to unlink itself before destruction as each Op implementation does not unlink itself on destruction at that time. Now, 'Use' and 'Step' allow every 'Op' to unlink itself on destruction, and thus 'dispose' is no longer necessary. Signed-off-by: Jonghyun Park --- contrib/coco/core/include/coco/IR/AvgPool2D.h | 3 --- contrib/coco/core/include/coco/IR/Conv2D.h | 3 --- contrib/coco/core/include/coco/IR/MaxPool2D.h | 3 --- contrib/coco/core/include/coco/IR/Op.h | 7 ------- contrib/coco/core/include/coco/IR/OpManager.h | 1 - contrib/coco/core/include/coco/IR/PadF.h | 3 --- contrib/coco/core/src/IR/AvgPool2D.cpp | 6 ------ contrib/coco/core/src/IR/Conv2D.cpp | 6 ------ contrib/coco/core/src/IR/Conv2D.test.cpp | 16 ---------------- contrib/coco/core/src/IR/MaxPool2D.cpp | 6 ------ contrib/coco/core/src/IR/OpManager.cpp | 1 - contrib/coco/core/src/IR/PadF.cpp | 5 ----- 12 files changed, 60 deletions(-) diff --git a/contrib/coco/core/include/coco/IR/AvgPool2D.h b/contrib/coco/core/include/coco/IR/AvgPool2D.h index 2412ba3..7295cc1 100644 --- a/contrib/coco/core/include/coco/IR/AvgPool2D.h +++ b/contrib/coco/core/include/coco/IR/AvgPool2D.h @@ -51,9 +51,6 @@ public: std::set uses(void) const override; public: - void dispose(void) override; - -public: AvgPool2D *asAvgPool2D(void) override { return this; } const AvgPool2D *asAvgPool2D(void) const override { return this; } diff --git a/contrib/coco/core/include/coco/IR/Conv2D.h b/contrib/coco/core/include/coco/IR/Conv2D.h index a08d48f..44334a4 100644 --- a/contrib/coco/core/include/coco/IR/Conv2D.h +++ b/contrib/coco/core/include/coco/IR/Conv2D.h @@ -45,9 +45,6 @@ public: const Conv2D *asConv2D(void) const override { return this; } public: - void dispose(void) override; - -public: Instr *loc(void) override { return parent(); } private: diff --git a/contrib/coco/core/include/coco/IR/MaxPool2D.h b/contrib/coco/core/include/coco/IR/MaxPool2D.h index 00cc8f3..c1d8d7e 100644 --- a/contrib/coco/core/include/coco/IR/MaxPool2D.h +++ b/contrib/coco/core/include/coco/IR/MaxPool2D.h @@ -45,9 +45,6 @@ public: const MaxPool2D *asMaxPool2D(void) const override { return this; } public: - void dispose(void) override; - -public: Window2D *window(void) { return &_window; } const Window2D *window(void) const { return &_window; } diff --git a/contrib/coco/core/include/coco/IR/Op.h b/contrib/coco/core/include/coco/IR/Op.h index ed6740f..5f31206 100644 --- a/contrib/coco/core/include/coco/IR/Op.h +++ b/contrib/coco/core/include/coco/IR/Op.h @@ -94,13 +94,6 @@ struct Op : public Entity public: Instr *parent(void) const; -public: - // @brief Release all the references - // - // NOTE The state after dispose SHOULD be identical to that just after construction - // TODO Rewrite as a pure virtual method once all the existing Op implement this method - virtual void dispose(void) { return; } - private: // @brief A link to Instr from Op // diff --git a/contrib/coco/core/include/coco/IR/OpManager.h b/contrib/coco/core/include/coco/IR/OpManager.h index b8b2e16..3134be7 100644 --- a/contrib/coco/core/include/coco/IR/OpManager.h +++ b/contrib/coco/core/include/coco/IR/OpManager.h @@ -47,7 +47,6 @@ public: public: // @brief Destroy (= deallocate) a Op instance // - // NOTE OpManager will invoke dispose before deallocation // NOTE destroy(op) WILL NOT update op->parent(). Client SHOULD detach op before destroy(op) call void destroy(Op *); }; diff --git a/contrib/coco/core/include/coco/IR/PadF.h b/contrib/coco/core/include/coco/IR/PadF.h index 223a962..fb6cf38 100644 --- a/contrib/coco/core/include/coco/IR/PadF.h +++ b/contrib/coco/core/include/coco/IR/PadF.h @@ -43,9 +43,6 @@ public: const PadF *asPadF(void) const override { return this; } public: - void dispose(void) override; - -public: Padding2D *pad(void) { return &_pad; } const Padding2D *pad(void) const { return &_pad; } diff --git a/contrib/coco/core/src/IR/AvgPool2D.cpp b/contrib/coco/core/src/IR/AvgPool2D.cpp index 749eea6..1dcf09b 100644 --- a/contrib/coco/core/src/IR/AvgPool2D.cpp +++ b/contrib/coco/core/src/IR/AvgPool2D.cpp @@ -31,10 +31,4 @@ std::set AvgPool2D::uses(void) const return res; } -void AvgPool2D::dispose(void) -{ - // NOTE AvgPool2D references no object - return; -} - } // namespace coco diff --git a/contrib/coco/core/src/IR/Conv2D.cpp b/contrib/coco/core/src/IR/Conv2D.cpp index 6b016f0..2912cab 100644 --- a/contrib/coco/core/src/IR/Conv2D.cpp +++ b/contrib/coco/core/src/IR/Conv2D.cpp @@ -26,12 +26,6 @@ Conv2D::Conv2D() : _ker{this} // DO NOTHING } -void Conv2D::dispose(void) -{ - // Release kernel object - ker(nullptr); -} - std::set Conv2D::uses(void) const { std::set res; diff --git a/contrib/coco/core/src/IR/Conv2D.test.cpp b/contrib/coco/core/src/IR/Conv2D.test.cpp index 9b35904..dfc82a9 100644 --- a/contrib/coco/core/src/IR/Conv2D.test.cpp +++ b/contrib/coco/core/src/IR/Conv2D.test.cpp @@ -135,22 +135,6 @@ TEST_F(Conv2DTest, accept) ASSERT_TRUE(immutable_ptr->accept(IsConv2D{})); } -TEST_F(Conv2DTest, dispose) -{ - // Prepare a kernel object for testing - auto obj = obj_mgr.create(nncc::core::ADT::kernel::Shape{1, 1, 3, 3}); - - // Create 'Conv2D' op - auto op = allocate(); - - op->ker(obj); - op->dispose(); - - // dispose() SHOULD release kernel object - ASSERT_EQ(op->ker(), nullptr); - ASSERT_EQ(obj->uses()->size(), 0); -} - TEST_F(Conv2DTest, destructor) { // Prepare a kernel object for testing diff --git a/contrib/coco/core/src/IR/MaxPool2D.cpp b/contrib/coco/core/src/IR/MaxPool2D.cpp index 6e8bb7e..99eca0e 100644 --- a/contrib/coco/core/src/IR/MaxPool2D.cpp +++ b/contrib/coco/core/src/IR/MaxPool2D.cpp @@ -24,12 +24,6 @@ MaxPool2D::MaxPool2D() // DO NOTHING } -void MaxPool2D::dispose(void) -{ - // NOTE MaxPool2D references no object - return; -} - std::set MaxPool2D::uses(void) const { // NOTE MaxPool2D accesses no object except IFM/OFM diff --git a/contrib/coco/core/src/IR/OpManager.cpp b/contrib/coco/core/src/IR/OpManager.cpp index 22d531a..9f814e9 100644 --- a/contrib/coco/core/src/IR/OpManager.cpp +++ b/contrib/coco/core/src/IR/OpManager.cpp @@ -63,7 +63,6 @@ template <> PadF *OpManager::create(void) void OpManager::destroy(Op *op) { assert(op->parent() == nullptr); - op->dispose(); release(op); } diff --git a/contrib/coco/core/src/IR/PadF.cpp b/contrib/coco/core/src/IR/PadF.cpp index c1374a8..8604165 100644 --- a/contrib/coco/core/src/IR/PadF.cpp +++ b/contrib/coco/core/src/IR/PadF.cpp @@ -31,9 +31,4 @@ std::set PadF::uses(void) const return res; } -void PadF::dispose(void) -{ - // NOTE PadF has nothing to release -} - } // namespace coco -- 2.7.4