reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

include/llvm/XRay/BlockVerifier.h
   44   State CurrentRecord = State::Unknown;
   44   State CurrentRecord = State::Unknown;
   48   Error transition(State To);
lib/XRay/BlockVerifier.cpp
   15 constexpr unsigned long long mask(BlockVerifier::State S) {
   19 constexpr std::size_t number(BlockVerifier::State S) {
   23 StringRef recordToString(BlockVerifier::State R) {
   25   case BlockVerifier::State::BufferExtents:
   27   case BlockVerifier::State::NewBuffer:
   29   case BlockVerifier::State::WallClockTime:
   31   case BlockVerifier::State::PIDEntry:
   33   case BlockVerifier::State::NewCPUId:
   35   case BlockVerifier::State::TSCWrap:
   37   case BlockVerifier::State::CustomEvent:
   39   case BlockVerifier::State::Function:
   41   case BlockVerifier::State::CallArg:
   43   case BlockVerifier::State::EndOfBuffer:
   45   case BlockVerifier::State::TypedEvent:
   47   case BlockVerifier::State::StateMax:
   48   case BlockVerifier::State::Unknown:
   55   BlockVerifier::State From;
   56   std::bitset<number(BlockVerifier::State::StateMax)> ToStates;
   61 Error BlockVerifier::transition(State To) {
   62   using ToSet = std::bitset<number(State::StateMax)>;
   63   static constexpr std::array<const Transition, number(State::StateMax)>
   64       TransitionTable{{{State::Unknown,
   65                         {mask(State::BufferExtents) | mask(State::NewBuffer)}},
   65                         {mask(State::BufferExtents) | mask(State::NewBuffer)}},
   67                        {State::BufferExtents, {mask(State::NewBuffer)}},
   67                        {State::BufferExtents, {mask(State::NewBuffer)}},
   69                        {State::NewBuffer, {mask(State::WallClockTime)}},
   69                        {State::NewBuffer, {mask(State::WallClockTime)}},
   71                        {State::WallClockTime,
   72                         {mask(State::PIDEntry) | mask(State::NewCPUId)}},
   72                         {mask(State::PIDEntry) | mask(State::NewCPUId)}},
   74                        {State::PIDEntry, {mask(State::NewCPUId)}},
   74                        {State::PIDEntry, {mask(State::NewCPUId)}},
   76                        {State::NewCPUId,
   77                         {mask(State::NewCPUId) | mask(State::TSCWrap) |
   77                         {mask(State::NewCPUId) | mask(State::TSCWrap) |
   78                          mask(State::CustomEvent) | mask(State::Function) |
   78                          mask(State::CustomEvent) | mask(State::Function) |
   79                          mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
   79                          mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
   81                        {State::TSCWrap,
   82                         {mask(State::TSCWrap) | mask(State::NewCPUId) |
   82                         {mask(State::TSCWrap) | mask(State::NewCPUId) |
   83                          mask(State::CustomEvent) | mask(State::Function) |
   83                          mask(State::CustomEvent) | mask(State::Function) |
   84                          mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
   84                          mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
   86                        {State::CustomEvent,
   87                         {mask(State::CustomEvent) | mask(State::TSCWrap) |
   87                         {mask(State::CustomEvent) | mask(State::TSCWrap) |
   88                          mask(State::NewCPUId) | mask(State::Function) |
   88                          mask(State::NewCPUId) | mask(State::Function) |
   89                          mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
   89                          mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
   91                        {State::TypedEvent,
   92                         {mask(State::TypedEvent) | mask(State::TSCWrap) |
   92                         {mask(State::TypedEvent) | mask(State::TSCWrap) |
   93                          mask(State::NewCPUId) | mask(State::Function) |
   93                          mask(State::NewCPUId) | mask(State::Function) |
   94                          mask(State::EndOfBuffer) | mask(State::CustomEvent)}},
   94                          mask(State::EndOfBuffer) | mask(State::CustomEvent)}},
   96                        {State::Function,
   97                         {mask(State::Function) | mask(State::TSCWrap) |
   97                         {mask(State::Function) | mask(State::TSCWrap) |
   98                          mask(State::NewCPUId) | mask(State::CustomEvent) |
   98                          mask(State::NewCPUId) | mask(State::CustomEvent) |
   99                          mask(State::CallArg) | mask(State::EndOfBuffer) |
   99                          mask(State::CallArg) | mask(State::EndOfBuffer) |
  100                          mask(State::TypedEvent)}},
  102                        {State::CallArg,
  103                         {mask(State::CallArg) | mask(State::Function) |
  103                         {mask(State::CallArg) | mask(State::Function) |
  104                          mask(State::TSCWrap) | mask(State::NewCPUId) |
  104                          mask(State::TSCWrap) | mask(State::NewCPUId) |
  105                          mask(State::CustomEvent) | mask(State::EndOfBuffer) |
  105                          mask(State::CustomEvent) | mask(State::EndOfBuffer) |
  106                          mask(State::TypedEvent)}},
  108                        {State::EndOfBuffer, {}}}};
  110   if (CurrentRecord >= State::StateMax)
  119   if (CurrentRecord == State::EndOfBuffer && To != State::NewBuffer)
  119   if (CurrentRecord == State::EndOfBuffer && To != State::NewBuffer)
  137   return transition(State::BufferExtents);
  141   return transition(State::WallClockTime);
  145   return transition(State::NewCPUId);
  149   return transition(State::TSCWrap);
  153   return transition(State::CustomEvent);
  157   return transition(State::CustomEvent);
  161   return transition(State::TypedEvent);
  165   return transition(State::CallArg);
  168 Error BlockVerifier::visit(PIDRecord &) { return transition(State::PIDEntry); }
  171   return transition(State::NewBuffer);
  175   return transition(State::EndOfBuffer);
  179   return transition(State::Function);
  185   case State::EndOfBuffer:
  186   case State::NewCPUId:
  187   case State::CustomEvent:
  188   case State::TypedEvent:
  189   case State::Function:
  190   case State::CallArg:
  191   case State::TSCWrap:
  201 void BlockVerifier::reset() { CurrentRecord = State::Unknown; }