LLVM  8.0.1
Classes | Public Types | Public Member Functions | Friends | List of all members
llvm::xray::Profile Class Reference

Profile instances are thread-compatible. More...

#include "llvm/XRay/Profile.h"

Classes

struct  Block
 
struct  Data
 

Public Types

using ThreadID = uint64_t
 
using PathID = unsigned
 
using FuncID = int32_t
 
using const_iterator = BlockList::const_iterator
 

Public Member Functions

Expected< std::vector< FuncID > > expandPath (PathID P) const
 Provides a sequence of function IDs from a previously interned PathID. More...
 
PathID internPath (ArrayRef< FuncID > P)
 The stack represented in |P| must be in stack order (leaf to root). More...
 
Error addBlock (Block &&B)
 Appends a fully-formed Block instance into the Profile. More...
 
 Profile ()=default
 
 ~Profile ()=default
 
 Profile (Profile &&O) noexcept
 
Profileoperator= (Profile &&O) noexcept
 
 Profile (const Profile &)
 
Profileoperator= (const Profile &)
 
const_iterator begin () const
 
const_iterator end () const
 
bool empty () const
 

Friends

void swap (Profile &L, Profile &R)
 

Detailed Description

Profile instances are thread-compatible.

Definition at line 52 of file Profile.h.

Member Typedef Documentation

◆ const_iterator

using llvm::xray::Profile::const_iterator = BlockList::const_iterator

Definition at line 141 of file Profile.h.

◆ FuncID

using llvm::xray::Profile::FuncID = int32_t

Definition at line 56 of file Profile.h.

◆ PathID

Definition at line 55 of file Profile.h.

◆ ThreadID

Definition at line 54 of file Profile.h.

Constructor & Destructor Documentation

◆ Profile() [1/3]

llvm::xray::Profile::Profile ( )
default

Referenced by operator=().

◆ ~Profile()

llvm::xray::Profile::~Profile ( )
default

◆ Profile() [2/3]

llvm::xray::Profile::Profile ( Profile &&  O)
inlinenoexcept

Definition at line 89 of file Profile.h.

◆ Profile() [3/3]

llvm::xray::Profile::Profile ( const Profile O)

Member Function Documentation

◆ addBlock()

Error llvm::xray::Profile::addBlock ( Block &&  B)

Appends a fully-formed Block instance into the Profile.

Returns an error condition in the following cases:

  • The PathData component of the Block is empty

Definition at line 122 of file Profile.cpp.

References B, llvm::make_error_code(), and llvm::Error::success().

Referenced by llvm::xray::mergeProfilesByStack(), llvm::xray::mergeProfilesByThread(), and llvm::xray::profileFromTrace().

◆ begin()

const_iterator llvm::xray::Profile::begin ( ) const
inline

Definition at line 142 of file Profile.h.

◆ empty()

bool llvm::xray::Profile::empty ( ) const
inline

Definition at line 144 of file Profile.h.

◆ end()

const_iterator llvm::xray::Profile::end ( ) const
inline

Definition at line 143 of file Profile.h.

◆ expandPath()

Expected< std::vector< Profile::FuncID > > llvm::xray::Profile::expandPath ( PathID  P) const

Provides a sequence of function IDs from a previously interned PathID.

Returns an error if |P| had not been interned before into the Profile.

Definition at line 132 of file Profile.cpp.

References llvm::make_error_code().

◆ internPath()

Profile::PathID llvm::xray::Profile::internPath ( ArrayRef< FuncID P)

The stack represented in |P| must be in stack order (leaf to root).

This will always return the same PathID for |P| that has the same sequence.

Definition at line 144 of file Profile.cpp.

References llvm::ArrayRef< T >::empty(), llvm::find_if(), N, and llvm::reverse().

Referenced by llvm::xray::mergeProfilesByStack(), llvm::xray::mergeProfilesByThread(), Profile(), and llvm::xray::profileFromTrace().

◆ operator=() [1/2]

Profile& llvm::xray::Profile::operator= ( Profile &&  O)
inlinenoexcept

Definition at line 94 of file Profile.h.

References llvm::RISCVFenceField::O, and Profile().

◆ operator=() [2/2]

Profile & llvm::xray::Profile::operator= ( const Profile O)

Definition at line 38 of file Profile.cpp.

References llvm::RISCVFenceField::O, and P.

Friends And Related Function Documentation

◆ swap

void swap ( Profile L,
Profile R 
)
friend

Definition at line 106 of file Profile.h.


The documentation for this class was generated from the following files: