-//===-- JIT.h - Abstract Execution Engine Interface -------------*- C++ -*-===//\r
-//\r
-// The LLVM Compiler Infrastructure\r
-//\r
-// This file is distributed under the University of Illinois Open Source\r
-// License. See LICENSE.TXT for details.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-//\r
-// Common functionality for JITEventListener implementations\r
-//\r
-//===----------------------------------------------------------------------===//\r
-\r
-#ifndef EVENT_LISTENER_COMMON_H\r
-#define EVENT_LISTENER_COMMON_H\r
-\r
-#include "llvm/ADT/DenseMap.h"\r
-#include "llvm/IR/DebugInfo.h"\r
-#include "llvm/IR/Metadata.h"\r
-#include "llvm/IR/ValueHandle.h"\r
-#include "llvm/Support/Path.h"\r
-\r
-namespace llvm {\r
-\r
-namespace jitprofiling {\r
-\r
-class FilenameCache {\r
- // Holds the filename of each Scope, so that we can pass a null-terminated\r
- // string into oprofile. \r
- DenseMap<const MDNode *, std::string> Filenames;\r
- DenseMap<const MDNode *, std::string> Paths;\r
-\r
- public:\r
- const char *getFilename(MDNode *Scope) {\r
- assert(Scope->isResolved() && "Expected Scope to be resolved");\r
- std::string &Filename = Filenames[Scope];\r
- if (Filename.empty()) {\r
- DIScope DIScope(Scope);\r
- Filename = DIScope.getFilename();\r
- }\r
- return Filename.c_str();\r
- }\r
-\r
- const char *getFullPath(MDNode *Scope) {\r
- assert(Scope->isResolved() && "Expected Scope to be resolved");\r
- std::string &P = Paths[Scope];\r
- if (P.empty()) {\r
- DIScope DIScope(Scope);\r
- StringRef DirName = DIScope.getDirectory();\r
- StringRef FileName = DIScope.getFilename();\r
- SmallString<256> FullPath;\r
- if (DirName != "." && DirName != "") {\r
- FullPath = DirName;\r
- }\r
- if (FileName != "") {\r
- sys::path::append(FullPath, FileName);\r
- }\r
- P = FullPath.str();\r
- }\r
- return P.c_str();\r
- }\r
-};\r
-\r
-} // namespace jitprofiling\r
-\r
-} // namespace llvm\r
-\r
-#endif //EVENT_LISTENER_COMMON_H\r
+//===-- JIT.h - Abstract Execution Engine Interface -------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Common functionality for JITEventListener implementations
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef EVENT_LISTENER_COMMON_H
+#define EVENT_LISTENER_COMMON_H
+
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/IR/DebugInfo.h"
+#include "llvm/IR/Metadata.h"
+#include "llvm/IR/ValueHandle.h"
+#include "llvm/Support/Path.h"
+
+namespace llvm {
+
+namespace jitprofiling {
+
+class FilenameCache {
+ // Holds the filename of each Scope, so that we can pass a null-terminated
+ // string into oprofile.
+ DenseMap<const MDNode *, std::string> Filenames;
+ DenseMap<const MDNode *, std::string> Paths;
+
+ public:
+ const char *getFilename(MDNode *Scope) {
+ assert(Scope->isResolved() && "Expected Scope to be resolved");
+ std::string &Filename = Filenames[Scope];
+ if (Filename.empty()) {
+ DIScope DIScope(Scope);
+ Filename = DIScope.getFilename();
+ }
+ return Filename.c_str();
+ }
+
+ const char *getFullPath(MDNode *Scope) {
+ assert(Scope->isResolved() && "Expected Scope to be resolved");
+ std::string &P = Paths[Scope];
+ if (P.empty()) {
+ DIScope DIScope(Scope);
+ StringRef DirName = DIScope.getDirectory();
+ StringRef FileName = DIScope.getFilename();
+ SmallString<256> FullPath;
+ if (DirName != "." && DirName != "") {
+ FullPath = DirName;
+ }
+ if (FileName != "") {
+ sys::path::append(FullPath, FileName);
+ }
+ P = FullPath.str();
+ }
+ return P.c_str();
+ }
+};
+
+} // namespace jitprofiling
+
+} // namespace llvm
+
+#endif //EVENT_LISTENER_COMMON_H