From a74969de1042bd4b881bc5272917d31364a0a1b7 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: Mon, 23 Jul 2018 16:56:44 +0900 Subject: [PATCH] [coco] Add 'BlockManager' class (#764) This commit adds 'BlockManager' class which allocates and tracks all the instrances of 'Block' in coco IR. Signed-off-by: Jonghyun Park --- contrib/coco/core/include/coco/IR/BlockManager.h | 30 ++++++++++++++++++++++++ contrib/coco/core/src/IR/BlockManager.cpp | 13 ++++++++++ contrib/coco/core/src/IR/BlockManager.test.cpp | 15 ++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 contrib/coco/core/include/coco/IR/BlockManager.h create mode 100644 contrib/coco/core/src/IR/BlockManager.cpp create mode 100644 contrib/coco/core/src/IR/BlockManager.test.cpp diff --git a/contrib/coco/core/include/coco/IR/BlockManager.h b/contrib/coco/core/include/coco/IR/BlockManager.h new file mode 100644 index 0000000..d52c9c5 --- /dev/null +++ b/contrib/coco/core/include/coco/IR/BlockManager.h @@ -0,0 +1,30 @@ +#ifndef __COCO_IR_BLOCK_MANAGER_H__ +#define __COCO_IR_BLOCK_MANAGER_H__ + +#include "coco/IR/Block.h" + +#include "coco/ADT/PtrManager.h" + +namespace coco +{ + +class BlockManager final : public PtrManager +{ +public: + BlockManager(const PtrLink *block_link, PtrLink *instr_link) + : _block_link{block_link}, _instr_link{instr_link} + { + // DO NOTHING + } + +private: + const PtrLink * const _block_link; + PtrLink * const _instr_link; + +public: + Block *create(void); +}; + +} // namespace coco + +#endif // __COCO_IR_BLOCK_MANAGER_H__ diff --git a/contrib/coco/core/src/IR/BlockManager.cpp b/contrib/coco/core/src/IR/BlockManager.cpp new file mode 100644 index 0000000..037bd21 --- /dev/null +++ b/contrib/coco/core/src/IR/BlockManager.cpp @@ -0,0 +1,13 @@ +#include "coco/IR/BlockManager.h" + +#include + +namespace coco +{ + +Block *BlockManager::create(void) +{ + return take(nncc::foundation::make_unique(_block_link, _instr_link)); +} + +} // namespace coco diff --git a/contrib/coco/core/src/IR/BlockManager.test.cpp b/contrib/coco/core/src/IR/BlockManager.test.cpp new file mode 100644 index 0000000..4de3d81 --- /dev/null +++ b/contrib/coco/core/src/IR/BlockManager.test.cpp @@ -0,0 +1,15 @@ +#include "coco/IR/BlockManager.h" + +#include + +TEST(IR_BLOCK_MANAGER, create) +{ + coco::PtrLink block_link; + coco::PtrLink instr_link; + + coco::BlockManager mgr{&block_link, &instr_link}; + + auto blk = mgr.create(); + + ASSERT_NE(blk, nullptr); +} -- 2.7.4