Add MemoryBuffer::getBufferKind() to report whether a memory buffer uses malloc'ed...
authorTed Kremenek <kremenek@apple.com>
Thu, 28 Apr 2011 20:34:18 +0000 (20:34 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 28 Apr 2011 20:34:18 +0000 (20:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130432 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/MemoryBuffer.h
lib/Support/MemoryBuffer.cpp

index 9a2aff04c7ff76cf78c95564015077a9b1061e42..d912e86c8b4e24e20023c3ac997e76f5cb72c772 100644 (file)
@@ -119,6 +119,21 @@ public:
   static error_code getFileOrSTDIN(const char *Filename,
                                    OwningPtr<MemoryBuffer> &result,
                                    int64_t FileSize = -1);
+  
+  
+  //===--------------------------------------------------------------------===//
+  // Provided for performance analysis.
+  //===--------------------------------------------------------------------===//
+
+  /// The kind of memory backing used to support the MemoryBuffer.
+  enum BufferKind {
+    MemoryBuffer_Malloc,
+    MemoryBuffer_MMap
+  };
+
+  /// Return information on the memory mechanism used to support the
+  /// MemoryBuffer.
+  virtual BufferKind getBufferKind() const = 0;  
 };
 
 } // end namespace llvm
index ea72720b7f01c53e0cb7c799391cb0ab2c6b521a..e2b5b7a585236d25deaa86357585020d4e84bc2a 100644 (file)
@@ -86,6 +86,10 @@ public:
      // The name is stored after the class itself.
     return reinterpret_cast<const char*>(this + 1);
   }
+  
+  virtual BufferKind getBufferKind() const {
+    return MemoryBuffer_Malloc;
+  }
 };
 }
 
@@ -191,6 +195,10 @@ public:
     sys::Path::UnMapFilePages(reinterpret_cast<const char*>(RealStart),
                               RealSize);
   }
+  
+  virtual BufferKind getBufferKind() const {
+    return MemoryBuffer_MMap;
+  }
 };
 }