[coco] Remove Op::dispose (#1761)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Fri, 5 Oct 2018 09:31:28 +0000 (18:31 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Fri, 5 Oct 2018 09:31:28 +0000 (18:31 +0900)
'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 <jh1302.park@samsung.com>
12 files changed:
contrib/coco/core/include/coco/IR/AvgPool2D.h
contrib/coco/core/include/coco/IR/Conv2D.h
contrib/coco/core/include/coco/IR/MaxPool2D.h
contrib/coco/core/include/coco/IR/Op.h
contrib/coco/core/include/coco/IR/OpManager.h
contrib/coco/core/include/coco/IR/PadF.h
contrib/coco/core/src/IR/AvgPool2D.cpp
contrib/coco/core/src/IR/Conv2D.cpp
contrib/coco/core/src/IR/Conv2D.test.cpp
contrib/coco/core/src/IR/MaxPool2D.cpp
contrib/coco/core/src/IR/OpManager.cpp
contrib/coco/core/src/IR/PadF.cpp

index 2412ba3..7295cc1 100644 (file)
@@ -51,9 +51,6 @@ public:
   std::set<Object *> uses(void) const override;
 
 public:
-  void dispose(void) override;
-
-public:
   AvgPool2D *asAvgPool2D(void) override { return this; }
   const AvgPool2D *asAvgPool2D(void) const override { return this; }
 
index a08d48f..44334a4 100644 (file)
@@ -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:
index 00cc8f3..c1d8d7e 100644 (file)
@@ -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; }
 
index ed6740f..5f31206 100644 (file)
@@ -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
   //
index b8b2e16..3134be7 100644 (file)
@@ -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 *);
 };
index 223a962..fb6cf38 100644 (file)
@@ -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; }
 
index 749eea6..1dcf09b 100644 (file)
@@ -31,10 +31,4 @@ std::set<Object *> AvgPool2D::uses(void) const
   return res;
 }
 
-void AvgPool2D::dispose(void)
-{
-  // NOTE AvgPool2D references no object
-  return;
-}
-
 } // namespace coco
index 6b016f0..2912cab 100644 (file)
@@ -26,12 +26,6 @@ Conv2D::Conv2D() : _ker{this}
   // DO NOTHING
 }
 
-void Conv2D::dispose(void)
-{
-  // Release kernel object
-  ker(nullptr);
-}
-
 std::set<Object *> Conv2D::uses(void) const
 {
   std::set<Object *> res;
index 9b35904..dfc82a9 100644 (file)
@@ -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
index 6e8bb7e..99eca0e 100644 (file)
@@ -24,12 +24,6 @@ MaxPool2D::MaxPool2D()
   // DO NOTHING
 }
 
-void MaxPool2D::dispose(void)
-{
-  // NOTE MaxPool2D references no object
-  return;
-}
-
 std::set<Object *> MaxPool2D::uses(void) const
 {
   // NOTE MaxPool2D accesses no object except IFM/OFM
index 22d531a..9f814e9 100644 (file)
@@ -63,7 +63,6 @@ template <> PadF *OpManager::create<PadF>(void)
 void OpManager::destroy(Op *op)
 {
   assert(op->parent() == nullptr);
-  op->dispose();
   release(op);
 }
 
index c1374a8..8604165 100644 (file)
@@ -31,9 +31,4 @@ std::set<Object *> PadF::uses(void) const
   return res;
 }
 
-void PadF::dispose(void)
-{
-  // NOTE PadF has nothing to release
-}
-
 } // namespace coco