|
| ExecutionState (ExecutionState &&)=delete |
| No move semantics because of constant members. We always need to clone a state.
|
|
void | add (const TraceEvent &event) |
| Add a new trace event to the state.
|
|
void | addTestObject (cstring category, cstring objectLabel, const TestObject *object) |
|
void | appendToEmitBuffer (const IR::Expression *expr) |
| Append data to the emit buffer.
|
|
void | appendToInputPacket (const IR::Expression *expr) |
| Append data to the input packet.
|
|
void | appendToPacketBuffer (const IR::Expression *expr) |
| Append data to the packet buffer.
|
|
ExecutionState & | clone () const override |
|
void | deleteTestObject (cstring category, cstring objectLabel) |
| Remove a test object from a category.
|
|
void | deleteTestObjectCategory (cstring category) |
| Remove a test category entirely.
|
|
const IR::Expression * | get (const IR::StateVariable &var) const override |
|
const Continuation::Body & | getBody () const |
|
const IR::StateVariable & | getCurrentParserErrorLabel () const |
|
const IR::Expression * | getEmitBuffer () const |
|
const IR::Expression * | getInputPacket () const |
|
int | getInputPacketCursor () const |
|
int | getInputPacketSize () const |
|
std::optional< const Continuation::Command > | getNextCmd () const |
|
const IR::Expression * | getPacketBuffer () const |
|
int | getPacketBufferSize () const |
|
const std::vector< const IR::Expression * > & | getPathConstraint () const |
|
template<class T > |
T | getProperty (cstring propertyName) const |
|
ReachabilityEngineState * | getReachabilityEngineState () const |
| Get the current state of the reachability engine.
|
|
const std::vector< uint64_t > & | getSelectedBranches () const |
|
const std::stack< std::reference_wrapper< const StackFrame > > & | getStack () const |
|
template<class T > |
const T * | getTestObject (cstring category, cstring objectLabel) const |
|
const TestObject * | getTestObject (cstring category, cstring objectLabel, bool checked) const |
|
TestObjectMap | getTestObjectCategory (cstring category) const |
|
const std::vector< std::reference_wrapper< const TraceEvent > > & | getTrace () const |
|
const P4::Coverage::CoverageSet & | getVisited () const |
|
void | handleException (Continuation::Exception e) |
| Invokes first handler for e found on the stack.
|
|
bool | hasProperty (cstring propertyName) const |
|
bool | isTerminal () const |
| Determines whether this state represents the end of an execution.
|
|
void | markVisited (const IR::Node *node) |
| Checks whether the node has been visited in this state.
|
|
ExecutionState & | operator= (ExecutionState &&)=delete |
|
const IR::Expression * | peekPacketBuffer (int amount) |
|
void | popBody () |
| Pops the top element of @body.
|
|
void | popContinuation (std::optional< const IR::Node * > argument_opt=std::nullopt) |
|
void | prependToInputPacket (const IR::Expression *expr) |
| Prepend data to the input packet.
|
|
void | prependToPacketBuffer (const IR::Expression *expr) |
| Prepend data to the packet buffer.
|
|
void | pushBranchDecision (uint64_t) |
|
void | pushContinuation (const StackFrame &frame) |
| Pushes a new frame onto the continuation stack.
|
|
void | pushCurrentContinuation (StackFrame::ExceptionHandlers handlers) |
|
void | pushCurrentContinuation (std::optional< const IR::Type * > parameterType_opt=std::nullopt, StackFrame::ExceptionHandlers={}) |
|
void | pushPathConstraint (const IR::Expression *e) |
| Adds path constraint.
|
|
void | replaceBody (const Continuation::Body &body) |
| Replaces @body with the given argument.
|
|
void | replaceTopBody (const Continuation::Command &cmd) |
| Replaces the top element of @body with @cmd.
|
|
template<class N > |
void | replaceTopBody (const std::vector< const N * > *nodes) |
|
void | replaceTopBody (const std::vector< Continuation::Command > *cmds) |
|
void | replaceTopBody (std::initializer_list< Continuation::Command > cmds) |
|
void | resetEmitBuffer () |
| Reset the emit buffer to zero.
|
|
void | resetPacketBuffer () |
| Reset the packet buffer to zero.
|
|
void | set (const IR::StateVariable &var, const IR::Expression *value) override |
|
void | setParserErrorLabel (const IR::StateVariable &parserError) |
| Set the parser error label to the.
|
|
void | setProperty (cstring propertyName, Continuation::PropertyValue property) |
| Set the property with.
|
|
void | setReachabilityEngineState (ReachabilityEngineState *newEngineState) |
| Update the reachability engine state.
|
|
const IR::Expression * | slicePacketBuffer (int amount) |
|
| AbstractExecutionState (AbstractExecutionState &&)=default |
|
| AbstractExecutionState (const IR::P4Program *program) |
| Creates an initial execution state for the given program.
|
|
void | assignStructLike (const IR::StateVariable &left, const IR::Expression *right) |
|
void | copyIn (const Target &target, const IR::Parameter *internalParam, cstring externalParamName) |
|
void | copyOut (const IR::Parameter *internalParam, cstring externalParamName) |
|
void | declareVariable (const Target &target, const IR::Declaration_Variable &declVar) |
|
bool | exists (const IR::StateVariable &var) const |
| Checks whether the given variable exists in the symbolic environment of this state.
|
|
const IR::IDeclaration * | findDecl (const IR::Path *path) const |
| Looks up a declaration from a path. A BUG occurs if no declaration is found.
|
|
const IR::IDeclaration * | findDecl (const IR::PathExpression *pathExpr) const |
| Looks up a declaration from a path expression. A BUG occurs if no declaration is found.
|
|
const IR::P4Table * | findTable (const IR::Member *member) const |
|
std::vector< IR::StateVariable > | getFlatFields (const IR::StateVariable &parent, std::vector< IR::StateVariable > *validVector=nullptr) const |
|
const NamespaceContext * | getNamespaceContext () const |
|
const IR::P4Action * | getP4Action (const IR::MethodCallExpression *actionExpr) const |
|
const SymbolicEnv & | getSymbolicEnv () const |
|
void | initializeBlockParams (const Target &target, const IR::Type_Declaration *typeDecl, const std::vector< cstring > *blockParams) |
|
void | initializeStructLike (const Target &target, const IR::StateVariable &targetVar, bool forceTaint) |
|
AbstractExecutionState & | operator= (AbstractExecutionState &&)=delete |
|
void | popNamespace () |
| Exists a namespace of declarations.
|
|
void | printSymbolicEnv (std::ostream &out=std::cout) const |
| Produce a formatted output of the current symbolic environment.
|
|
void | pushNamespace (const IR::INamespace *ns) |
| Enters a namespace of declarations.
|
|
const IR::Type * | resolveType (const IR::Type *type) const |
| Resolves a Type in the current environment.
|
|
void | setNamespaceContext (const NamespaceContext *namespaces) |
| Replaces the namespace context in the current state with the given context.
|
|
void | setStructLike (const IR::StateVariable &targetVar, const IR::StateVariable &sourceVar) |
| Set the members of struct-like @target with the values of struct-like @source.
|
|