-
Notifications
You must be signed in to change notification settings - Fork 7
Conditional Values
VarexJ uses conditional values for any data stored in the interpreter. Thus, VarexJ does not need to clone the complete memory, in contrast JPF. I.e. we always have a mapping from a value to the corresponding context (i.e., a feature selection).
VarexJ currently supports two ways to represent conditional values, as tree and as map.
Tree Choice: here the values are stored in the leafs of the tree. Each node defines a context, while its left branch represents the sub tree where the context is fulfilled, and the right branch values where the context is not.
Map Choice: here we have a direct mapping from a context to a concrete value. Thus, all concrete values are only contained once.
You should use tree choices if you expect only small interactions because the effort to calculate with the tree is much smaller than for the map choice. However, because map choices only contain each value only once, this implementation scales much better to higher interactions.
Usage [TreeChoice, MapChoice]: +choice=TreeChoice
Details on the concepts and designs of VarexJ can be found in this Master's thesis:
VarexJ: A Variability-Aware Interpreter for Java Applications