[coco] Pass ObjectLink to Op/Instr Manager (#1002)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Tue, 14 Aug 2018 07:44:36 +0000 (16:44 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Tue, 14 Aug 2018 07:44:36 +0000 (16:44 +0900)
This commit revises Op/Instr manager to take ObjectLink as an arugment
of their constructor.

Note that this link is not used, yet.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/coco/core/include/coco/IR/InstrManager.h
contrib/coco/core/include/coco/IR/OpManager.h
contrib/coco/core/src/IR/Instr.test.cpp
contrib/coco/core/src/IR/InstrManager.test.cpp
contrib/coco/core/src/IR/Module.cpp
contrib/coco/core/src/IR/OpManager.cpp
contrib/coco/core/src/IR/OpManager.test.cpp

index 87a3f36..919d6e0 100644 (file)
@@ -4,6 +4,9 @@
 #include "coco/IR/Instr.h"
 #include "coco/IR/Op.forward.h"
 
+#include "coco/IR/Object.forward.h"
+#include "coco/IR/ObjectInfo.forward.h"
+
 #include "coco/ADT/PtrManager.h"
 #include "coco/ADT/PtrLink.h"
 
@@ -13,8 +16,9 @@ namespace coco
 class InstrManager final : public PtrManager<Instr>
 {
 public:
-  InstrManager(PtrLink<Op, Instr> *op_link, const PtrLink<Instr, Block> *instr_link)
-      : _op_link{op_link}, _instr_link{instr_link}
+  InstrManager(PtrLink<Op, Instr> *op_link, const PtrLink<Instr, Block> *instr_link,
+               const PtrLink<Object, ObjectInfo> *obj_link)
+      : _op_link{op_link}, _instr_link{instr_link}, _obj_link{obj_link}
   {
     // DO NOTHING
   }
@@ -25,6 +29,7 @@ public:
 private:
   PtrLink<Op, Instr> *const _op_link;
   const PtrLink<Instr, Block> *const _instr_link;
+  const PtrLink<Object, ObjectInfo> *const _obj_link;
 };
 
 } // namespace coco
index bd6f1b4..2f6921e 100644 (file)
@@ -4,6 +4,9 @@
 #include "coco/IR/Op.h"
 #include "coco/IR/Instr.forward.h"
 
+#include "coco/IR/Object.forward.h"
+#include "coco/IR/ObjectInfo.forward.h"
+
 #include "coco/ADT/PtrManager.h"
 #include "coco/ADT/PtrLink.h"
 
@@ -13,13 +16,14 @@ namespace coco
 struct OpManager : public PtrManager<Op>
 {
 public:
-  OpManager(const PtrLink<Op, Instr> *op_link);
+  OpManager(const PtrLink<Op, Instr> *op_link, const PtrLink<Object, ObjectInfo> *obj_link);
 
 public:
   Conv2D *create(const Conv2D::Param &);
 
 private:
   const PtrLink<Op, Instr> *const _op_link;
+  const PtrLink<Object, ObjectInfo> *const _obj_link;
 };
 
 } // namespace coco
index db33e03..fdd2bb2 100644 (file)
@@ -20,7 +20,7 @@ protected:
   coco::PtrLink<coco::Instr, coco::Block> link;
 
   coco::ObjectManager obj_mgr{&obj_link, &bag_link};
-  coco::OpManager op_mgr{&op_link};
+  coco::OpManager op_mgr{&op_link, &obj_link};
 };
 } // namespace
 
index 63befd0..3fbcd83 100644 (file)
@@ -7,7 +7,8 @@ TEST(IR_INSTR_MANAGER, create_UnitF)
 {
   coco::PtrLink<coco::Op, coco::Instr> op_link;
   coco::PtrLink<coco::Instr, coco::Block> link;
-  coco::InstrManager mgr{&op_link, &link};
+  coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
+  coco::InstrManager mgr{&op_link, &link, &obj_link};
 
   // Conv2D
   {
index bdde7e5..3c2b2ef 100644 (file)
@@ -120,8 +120,9 @@ std::unique_ptr<Module> Module::create(void)
     mgr->_bag = nncc::foundation::make_unique<coco::BagManager>(bag_link.get());
     mgr->_object =
         nncc::foundation::make_unique<coco::ObjectManager>(obj_link.get(), bag_link.get());
-    mgr->_op = nncc::foundation::make_unique<coco::OpManager>(op_link.get());
-    mgr->_instr = nncc::foundation::make_unique<coco::InstrManager>(op_link.get(), ins_link.get());
+    mgr->_op = nncc::foundation::make_unique<coco::OpManager>(op_link.get(), obj_link.get());
+    mgr->_instr = nncc::foundation::make_unique<coco::InstrManager>(op_link.get(), ins_link.get(),
+                                                                    obj_link.get());
     mgr->_block = nncc::foundation::make_unique<coco::BlockManager>(blk_link.get(), ins_link.get());
     mgr->_input = nncc::foundation::make_unique<coco::InputManager>(bag_link.get());
     mgr->_output = nncc::foundation::make_unique<coco::OutputManager>(bag_link.get());
index 4754726..d534567 100644 (file)
@@ -7,7 +7,8 @@ using nncc::foundation::make_unique;
 namespace coco
 {
 
-OpManager::OpManager(const PtrLink<Op, Instr> *op_link) : _op_link{op_link}
+OpManager::OpManager(const PtrLink<Op, Instr> *op_link, const PtrLink<Object, ObjectInfo> *obj_link)
+    : _op_link{op_link}, _obj_link{obj_link}
 {
   // DO NOTHING
 }
index 74c14bd..bc5874f 100644 (file)
@@ -5,7 +5,8 @@
 TEST(IR_OP_MANAGER, create_Conv2D)
 {
   coco::PtrLink<coco::Op, coco::Instr> op_link;
-  coco::OpManager mgr{&op_link};
+  coco::PtrLink<coco::Object, coco::ObjectInfo> obj_link;
+  coco::OpManager mgr{&op_link, &obj_link};
 
   coco::Conv2D::Param param;
   auto obj = mgr.create(param);