This change replaces the existing Processor implementation with a new one capable of exploring different state spaces due to branches with symbolic conditions. The ProcessorManager is used to manage this exploration, and is also capable of pruning processors to avoid further exploring their paths if desired.
This change renames MemoryTree to MemoryBranch and adds a MemoryTree view on a collection of branches. The new MemoryTree can be used to read a value simultaneously from all branches, conditioned in their respective branch predicates.
The x86-64 integration tests have all been updated to use the new Processor, and a new test has been added to demonstrate how the ProcessorManager can be used to explore branching paths.
This change replaces the existing
Processor
implementation with a new one capable of exploring different state spaces due to branches with symbolic conditions. TheProcessorManager
is used to manage this exploration, and is also capable of pruning processors to avoid further exploring their paths if desired.This change renames
MemoryTree
toMemoryBranch
and adds aMemoryTree
view on a collection of branches. The newMemoryTree
can be used to read a value simultaneously from all branches, conditioned in their respective branch predicates.The x86-64 integration tests have all been updated to use the new
Processor
, and a new test has been added to demonstrate how theProcessorManager
can be used to explore branching paths.