diff --git a/bcc.cpp b/bcc.cpp
index c2c1037..8aee2e9 100644
--- a/bcc.cpp
+++ b/bcc.cpp
@@ -165,6 +165,7 @@
 // #define PROVIDE_TRACE_CODEGEN
 
 #if defined(USE_DISASSEMBLER)
+#   include "bcc_buff_mem_object.h"
 #   include "llvm/MC/MCInst.h"
 #   include "llvm/MC/MCAsmInfo.h"
 #   include "llvm/MC/MCInstPrinter.h"
@@ -2011,26 +2012,6 @@
     const llvm::MCDisassembler *mpDisassmbler;
     llvm::MCInstPrinter *mpIP;
 
-    class BufferMemoryObject : public llvm::MemoryObject {
-    private:
-      const uint8_t *mBytes;
-      uint64_t mLength;
-
-    public:
-      BufferMemoryObject(const uint8_t *Bytes, uint64_t Length) :
-        mBytes(Bytes), mLength(Length) { }
-
-      uint64_t getBase() const { return 0; }
-      uint64_t getExtent() const { return mLength; }
-
-      int readByte(uint64_t Addr, uint8_t *Byte) const {
-        if (Addr > getExtent())
-          return -1;
-        *Byte = mBytes[Addr];
-        return 0;
-      }
-    };
-
    public:
     void Disassemble(const llvm::StringRef &Name, uint8_t *Start,
                      size_t Length, bool IsStub) {
