From 35be669eaf500c21fed25f4b5588ee3802c18a47 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EA=B9=80=EC=9A=A9=EC=84=AD/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Engineer/=EC=82=BC=EC=84=B1=EC=A0=84?= =?utf8?q?=EC=9E=90?= Date: Wed, 17 Oct 2018 10:13:51 +0900 Subject: [PATCH] [neurun] Introduce IMemoryAllocator (#3190) Introduces IMemoryAllocator as an interface of memory allocator. Now BumpAllocator inherits to it. Signed-off-by: Yongseop Kim --- runtimes/neurun/src/backend/cpu/MemoryAllocator.h | 32 +++++++++++++++-------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/runtimes/neurun/src/backend/cpu/MemoryAllocator.h b/runtimes/neurun/src/backend/cpu/MemoryAllocator.h index 797d49e..beaae6f 100644 --- a/runtimes/neurun/src/backend/cpu/MemoryAllocator.h +++ b/runtimes/neurun/src/backend/cpu/MemoryAllocator.h @@ -32,18 +32,28 @@ struct MemoryBlock uint32_t size; }; -// FIXME Should extract MemoryAllocator from this BumpAllocator -class BumpAllocator +struct IMemoryAllocator { -public: - virtual ~BumpAllocator(); + virtual ~IMemoryAllocator() = default; // FIXME Remove this when instance() is removed - virtual void reset(); - virtual uint32_t allocate(size_t size); - virtual void free(uint32_t mem_id); - virtual void finalize(); - virtual uint8_t *base() const { return _base; } - virtual MemoryBlock getMemoryBlock(uint32_t mem_id); + virtual void reset() = 0; + virtual uint32_t allocate(size_t) = 0; + virtual void free(uint32_t) = 0; + virtual void finalize() = 0; + virtual uint8_t *base() const = 0; + virtual MemoryBlock getMemoryBlock(uint32_t) = 0; +}; + +class BumpAllocator : public IMemoryAllocator +{ +public: + virtual ~BumpAllocator() override; + virtual void reset() override; + virtual uint32_t allocate(size_t size) override; + virtual void free(uint32_t mem_id) override; + virtual void finalize() override; + virtual uint8_t *base() const override { return _base; } + virtual MemoryBlock getMemoryBlock(uint32_t mem_id) override; private: uint8_t *_base = nullptr; @@ -54,7 +64,7 @@ private: public: // This should be moved into something class in backend, not as global var - static BumpAllocator &instance() + static IMemoryAllocator &instance() { static BumpAllocator inst; return inst; -- 2.7.4