diff options
| author | Grigory Bazilevich <g.bazilevich@ispras.ru> | 2026-03-11 09:47:46 +0300 |
|---|---|---|
| committer | Grigory Bazilevich <g.bazilevich@ispras.ru> | 2026-03-11 09:47:46 +0300 |
| commit | 92241e12321c9ece60e481c71d69203ae2ad134d (patch) | |
| tree | 78e021f01afd5d9b252c30cf7fb67c255eea41fc /pkg/corpus/corpus.go | |
| parent | 9eca1358882afaf2fca59c50686db1b8ef681850 (diff) | |
pkg/corpus: increase the priority of programs that were rarely selectedcorpusfix
Diffstat (limited to 'pkg/corpus/corpus.go')
| -rw-r--r-- | pkg/corpus/corpus.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/pkg/corpus/corpus.go b/pkg/corpus/corpus.go index e6569dbc6..d57b5fd25 100644 --- a/pkg/corpus/corpus.go +++ b/pkg/corpus/corpus.go @@ -98,6 +98,7 @@ type Item struct { Call int Prog *prog.Prog HasAny bool // whether the prog contains squashed arguments + ExecLast int64 Signal signal.Signal StableSignal signal.Signal Cover []uint64 @@ -106,6 +107,8 @@ type Item struct { areas map[*focusAreaState]struct{} } +const maxExecs int64 = 5 + func (item Item) StringCall() string { return item.Prog.CallName(item.Call) } @@ -155,6 +158,7 @@ func (corpus *Corpus) Save(inp NewInput) { Prog: old.Prog, Call: old.Call, HasAny: old.HasAny, + ExecLast: old.ExecLast, Signal: newSignal, StableSignal: newStableSignal, Cover: newCover.Serialize(), @@ -171,6 +175,7 @@ func (corpus *Corpus) Save(inp NewInput) { Call: inp.Call, Prog: inp.Prog, HasAny: inp.Prog.ContainsAny(), + ExecLast: maxExecs, Signal: inp.Signal, StableSignal: inp.StableSignal, Cover: inp.Cover, @@ -181,6 +186,8 @@ func (corpus *Corpus) Save(inp NewInput) { corpus.progsMap[sig] = newItem corpus.applyFocusAreas(newItem, newItem.Cover) corpus.saveProgram(inp.Prog, newItem.StableSignal) + corpus.modifyPriority(inp.Prog, newItem.Signal, newItem.ExecLast) + // TODO do same thing with Focus Areas corpus.signal.Merge(inp.Signal) newCover := corpus.cover.MergeDiff(inp.Cover) |
