1 #ifndef LLVM_PROFILEDATA_RAWMEMPROFREADER_H_ 2 #define LLVM_PROFILEDATA_RAWMEMPROFREADER_H_ 3 //===- MemProfReader.h - Instrumented memory profiling reader ---*- C++ -*-===// 4 // 5 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 6 // See https://llvm.org/LICENSE.txt for license information. 7 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 8 // 9 //===----------------------------------------------------------------------===// 10 // 11 // This file contains support for reading MemProf profiling data. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #include "llvm/Support/Error.h" 16 #include "llvm/Support/MemoryBuffer.h" 17 18 namespace llvm { 19 namespace memprof { 20 21 class RawMemProfReader { 22 public: 23 RawMemProfReader(std::unique_ptr<MemoryBuffer> DataBuffer) 24 : DataBuffer(std::move(DataBuffer)) {} 25 // Prints aggregate counts for each raw profile parsed from the DataBuffer. 26 void printSummaries(raw_ostream &OS) const; 27 28 // Return true if the \p DataBuffer starts with magic bytes indicating it is 29 // a raw binary memprof profile. 30 static bool hasFormat(const MemoryBuffer &DataBuffer); 31 32 // Create a RawMemProfReader after sanity checking the contents of the file at 33 // \p Path. 34 static Expected<std::unique_ptr<RawMemProfReader>> create(const Twine &Path); 35 36 private: 37 std::unique_ptr<MemoryBuffer> DataBuffer; 38 }; 39 40 } // namespace memprof 41 } // namespace llvm 42 43 #endif // LLVM_PROFILEDATA_RAWMEMPROFREADER_H_ 44