mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
ee48a509e2
Summary: Processing 2 GB XRay traces with "llvm-xray convert -symbolize" needs to go over each trace record and symbolize the function name refered to by its ID. Currently this happens by asking the LLVM symbolizer code every single time. A simple cache can save around 30 minutes of processing of that trace. llvm-xray's resident memory usage increased negligibly with this cache. Reviewers: dberris Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D43896 llvm-svn: 326407
52 lines
1.7 KiB
C++
52 lines
1.7 KiB
C++
//===- func-id-helper.h - XRay Function ID Conversion Helpers -------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Defines helper tools dealing with XRay-generated function ids.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
#ifndef LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H
|
|
#define LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H
|
|
|
|
#include "llvm/ADT/DenseMap.h"
|
|
#include "llvm/DebugInfo/Symbolize/Symbolize.h"
|
|
#include <unordered_map>
|
|
|
|
namespace llvm {
|
|
namespace xray {
|
|
|
|
// This class consolidates common operations related to Function IDs.
|
|
class FuncIdConversionHelper {
|
|
public:
|
|
using FunctionAddressMap = std::unordered_map<int32_t, uint64_t>;
|
|
|
|
private:
|
|
std::string BinaryInstrMap;
|
|
symbolize::LLVMSymbolizer &Symbolizer;
|
|
const FunctionAddressMap &FunctionAddresses;
|
|
mutable llvm::DenseMap<int32_t, std::string> CachedNames;
|
|
|
|
public:
|
|
FuncIdConversionHelper(std::string BinaryInstrMap,
|
|
symbolize::LLVMSymbolizer &Symbolizer,
|
|
const FunctionAddressMap &FunctionAddresses)
|
|
: BinaryInstrMap(std::move(BinaryInstrMap)), Symbolizer(Symbolizer),
|
|
FunctionAddresses(FunctionAddresses) {}
|
|
|
|
// Returns the symbol or a string representation of the function id.
|
|
std::string SymbolOrNumber(int32_t FuncId) const;
|
|
|
|
// Returns the file and column from debug info for the given function id.
|
|
std::string FileLineAndColumn(int32_t FuncId) const;
|
|
};
|
|
|
|
} // namespace xray
|
|
} // namespace llvm
|
|
|
|
#endif // LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H
|