Extract bcc::BufferMemoryObject class from bcc.cpp.
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) {
diff --git a/bcc_buff_mem_object.h b/bcc_buff_mem_object.h
new file mode 100644
index 0000000..45400c9
--- /dev/null
+++ b/bcc_buff_mem_object.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2010, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef BCC_BUFF_MEM_OBJECT_H
+#define BCC_BUFF_MEM_OBJECT_H
+
+#include "llvm/Support/MemoryObject.h"
+
+namespace bcc {
+
+ 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;
+ }
+ };
+
+} // end namespace bcc
+
+#endif // BCC_BUFF_MEM_OBJ_H