Lines Matching full:state
17 constexpr unsigned long long mask(BlockVerifier::State S) {
21 constexpr std::size_t number(BlockVerifier::State S) {
25 StringRef recordToString(BlockVerifier::State R) {
27 case BlockVerifier::State::BufferExtents:
29 case BlockVerifier::State::NewBuffer:
31 case BlockVerifier::State::WallClockTime:
33 case BlockVerifier::State::PIDEntry:
35 case BlockVerifier::State::NewCPUId:
37 case BlockVerifier::State::TSCWrap:
39 case BlockVerifier::State::CustomEvent:
41 case BlockVerifier::State::Function:
43 case BlockVerifier::State::CallArg:
45 case BlockVerifier::State::EndOfBuffer:
47 case BlockVerifier::State::TypedEvent:
49 case BlockVerifier::State::StateMax:
50 case BlockVerifier::State::Unknown:
53 llvm_unreachable("Unkown state!");
57 BlockVerifier::State From;
58 std::bitset<number(BlockVerifier::State::StateMax)> ToStates;
63 Error BlockVerifier::transition(State To) {
64 using ToSet = std::bitset<number(State::StateMax)>;
65 static constexpr std::array<const Transition, number(State::StateMax)>
66 TransitionTable{{{State::Unknown,
67 {mask(State::BufferExtents) | mask(State::NewBuffer)}},
69 {State::BufferExtents, {mask(State::NewBuffer)}},
71 {State::NewBuffer, {mask(State::WallClockTime)}},
73 {State::WallClockTime,
74 {mask(State::PIDEntry) | mask(State::NewCPUId)}},
76 {State::PIDEntry, {mask(State::NewCPUId)}},
78 {State::NewCPUId,
79 {mask(State::NewCPUId) | mask(State::TSCWrap) |
80 mask(State::CustomEvent) | mask(State::Function) |
81 mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
83 {State::TSCWrap,
84 {mask(State::TSCWrap) | mask(State::NewCPUId) |
85 mask(State::CustomEvent) | mask(State::Function) |
86 mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
88 {State::CustomEvent,
89 {mask(State::CustomEvent) | mask(State::TSCWrap) |
90 mask(State::NewCPUId) | mask(State::Function) |
91 mask(State::EndOfBuffer) | mask(State::TypedEvent)}},
93 {State::TypedEvent,
94 {mask(State::TypedEvent) | mask(State::TSCWrap) |
95 mask(State::NewCPUId) | mask(State::Function) |
96 mask(State::EndOfBuffer) | mask(State::CustomEvent)}},
98 {State::Function,
99 {mask(State::Function) | mask(State::TSCWrap) |
100 mask(State::NewCPUId) | mask(State::CustomEvent) |
101 mask(State::CallArg) | mask(State::EndOfBuffer) |
102 mask(State::TypedEvent)}},
104 {State::CallArg,
105 {mask(State::CallArg) | mask(State::Function) |
106 mask(State::TSCWrap) | mask(State::NewCPUId) |
107 mask(State::CustomEvent) | mask(State::EndOfBuffer) |
108 mask(State::TypedEvent)}},
110 {State::EndOfBuffer, {}}}};
112 if (CurrentRecord >= State::StateMax)
121 if (CurrentRecord == State::EndOfBuffer && To != State::NewBuffer)
139 return transition(State::BufferExtents);
143 return transition(State::WallClockTime);
147 return transition(State::NewCPUId);
151 return transition(State::TSCWrap);
155 return transition(State::CustomEvent);
159 return transition(State::CustomEvent);
163 return transition(State::TypedEvent);
167 return transition(State::CallArg);
170 Error BlockVerifier::visit(PIDRecord &) { return transition(State::PIDEntry); }
173 return transition(State::NewBuffer);
177 return transition(State::EndOfBuffer);
181 return transition(State::Function);
187 case State::EndOfBuffer:
188 case State::NewCPUId:
189 case State::CustomEvent:
190 case State::TypedEvent:
191 case State::Function:
192 case State::CallArg:
193 case State::TSCWrap:
203 void BlockVerifier::reset() { CurrentRecord = State::Unknown; }