|
|
| 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.
|
| |
Represents state of execution after having reached a program point.