aboutsummaryrefslogtreecommitdiffstats
path: root/prog/mutation.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-01-20 14:33:35 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-01-20 14:56:20 +0100
commitc4901df5c3ec697876b29d00009fe82386ffe183 (patch)
treed6b65360baa2285bf416132a831f3ed3b904cc05 /prog/mutation.go
parentb218a25ecb74232b482689cb7165c1b6e981181d (diff)
prog: mutate programs more aggressively
Currently we stop mutating with 50% probability. Stop mutating with 33% probability instead. Benchmark shows both coverage increase and corpus reduction: baseline oneof3 diff coverage 65467 65604 137 corpus 35423 35354 -69 exec total 5474879 5023268 -451611
Diffstat (limited to 'prog/mutation.go')
-rw-r--r--prog/mutation.go4
1 files changed, 2 insertions, 2 deletions
diff --git a/prog/mutation.go b/prog/mutation.go
index e8f8f47ac..32c63e0d2 100644
--- a/prog/mutation.go
+++ b/prog/mutation.go
@@ -24,7 +24,7 @@ func (p *Prog) Mutate(rs rand.Source, ncalls int, ct *ChoiceTable, corpus []*Pro
} else {
// Mutate current prog without splicing.
retry := false
- for stop := false; !stop || retry; stop = r.bin() {
+ for stop := false; !stop || retry; stop = r.oneOf(3) {
retry = false
r.choose(
20, func() {
@@ -54,7 +54,7 @@ func (p *Prog) Mutate(rs rand.Source, ncalls int, ct *ChoiceTable, corpus []*Pro
return
}
s := analyze(ct, p, c)
- for stop := false; !stop; stop = r.bin() {
+ for stop := false; !stop; stop = r.oneOf(3) {
args, bases := mutationArgs(c)
if len(args) == 0 {
retry = true