brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · d85be5b Raw
111 lines · cpp
1//===- BlockPrinter.cpp - FDR Block Pretty Printer Implementation --------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8#include "llvm/XRay/BlockPrinter.h"9 10using namespace llvm;11using namespace llvm::xray;12 13Error BlockPrinter::visit(BufferExtents &R) {14  OS << "\n[New Block]\n";15  CurrentState = State::Preamble;16  return RP.visit(R);17}18 19// Preamble printing.20Error BlockPrinter::visit(NewBufferRecord &R) {21  if (CurrentState == State::Start)22    OS << "\n[New Block]\n";23 24  OS << "Preamble: \n";25  CurrentState = State::Preamble;26  return RP.visit(R);27}28 29Error BlockPrinter::visit(WallclockRecord &R) {30  CurrentState = State::Preamble;31  return RP.visit(R);32}33 34Error BlockPrinter::visit(PIDRecord &R) {35  CurrentState = State::Preamble;36  return RP.visit(R);37}38 39// Metadata printing.40Error BlockPrinter::visit(NewCPUIDRecord &R) {41  if (CurrentState == State::Preamble)42    OS << "\nBody:\n";43  if (CurrentState == State::Function)44    OS << "\nMetadata: ";45  CurrentState = State::Metadata;46  OS << " ";47  auto E = RP.visit(R);48  return E;49}50 51Error BlockPrinter::visit(TSCWrapRecord &R) {52  if (CurrentState == State::Function)53    OS << "\nMetadata:";54  CurrentState = State::Metadata;55  OS << " ";56  auto E = RP.visit(R);57  return E;58}59 60// Custom events will be rendered like "function" events.61Error BlockPrinter::visit(CustomEventRecord &R) {62  if (CurrentState == State::Metadata)63    OS << "\n";64  CurrentState = State::CustomEvent;65  OS << "*  ";66  auto E = RP.visit(R);67  return E;68}69 70Error BlockPrinter::visit(CustomEventRecordV5 &R) {71  if (CurrentState == State::Metadata)72    OS << "\n";73  CurrentState = State::CustomEvent;74  OS << "*  ";75  auto E = RP.visit(R);76  return E;77}78 79Error BlockPrinter::visit(TypedEventRecord &R) {80  if (CurrentState == State::Metadata)81    OS << "\n";82  CurrentState = State::CustomEvent;83  OS << "*  ";84  auto E = RP.visit(R);85  return E;86}87 88// Function call printing.89Error BlockPrinter::visit(FunctionRecord &R) {90  if (CurrentState == State::Metadata)91    OS << "\n";92  CurrentState = State::Function;93  OS << "-  ";94  auto E = RP.visit(R);95  return E;96}97 98Error BlockPrinter::visit(CallArgRecord &R) {99  CurrentState = State::Arg;100  OS << " : ";101  auto E = RP.visit(R);102  return E;103}104 105Error BlockPrinter::visit(EndBufferRecord &R) {106    CurrentState = State::End;107    OS << " *** ";108    auto E = RP.visit(R);109    return E;110}111