Next: Utilities, Previous: Clang C Tokenizer, Up: Components [Contents][Index]
For many software objects, a large portion of the search time will be spent on compiling mutants in order to test their fitness. This overhead can be reduced significantly through the use of super-mutants, which bundle multiple changes into a single genome, guarded by runtime flags. This allows several mutants to be evaluated with a single compilation.
Super-mutants can be enabled with the :super-mutant-count
argument
to evolve
. When this is greater than one, each iteration of the
search loop will generate the indicated number of mutants. The
mutants will then be combined into a super-mutant, producing a
single phenome which is used to evaluate all variants.
This process is almost entirely transparent to the client
code. The callback functions every-pre-fn
, every-post-fn
and
filter
will be called individually on each mutant. The test
function will also be called on each variant, but calls to phenome
will return a wrapper which invokes the super-mutant with the
desired mutations enabled.
Super-mutants are currently only implemented for the specific software objects mentioned in the following subsections of this section.
• Clang Super-Mutants | Clang software object super-mutants | |
• ASM Super-Mutants | Assembly software object super-mutants |