From 3fe1aeddbc74e43e8561db61cdaad620c5993d92 Mon Sep 17 00:00:00 2001 From: Grigory Bazilevich Date: Wed, 11 Mar 2026 09:44:38 +0300 Subject: pkg/corpus: upgrade corpus minimization algorithm --- pkg/corpus/minimize.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'pkg/corpus/minimize.go') diff --git a/pkg/corpus/minimize.go b/pkg/corpus/minimize.go index d01e06f57..d3d68ee27 100644 --- a/pkg/corpus/minimize.go +++ b/pkg/corpus/minimize.go @@ -41,11 +41,30 @@ func (corpus *Corpus) Minimize(cover bool) { // Overwrite the program lists. corpus.ProgramsList = &ProgramsList{} + corpus.ProgramsList.prios.reserve(len(inputs)) for _, area := range corpus.focusAreas { area.ProgramsList = &ProgramsList{} } - for _, ctx := range signal.Minimize(inputs) { + progs := signal.Minimize(inputs) + + sort.SliceStable(progs, func(i, j int) bool { + first := progs[i].(*Item) + second := progs[j].(*Item) + return first.ExecLast > second.ExecLast + }) + + inputs = make([]signal.Context, 0, len(progs)) + for _, inp := range progs { + inputs = append(inputs, signal.Context{ + Signal: inp.(*Item).StableSignal, + Context: inp, + }) + } + progs = signal.Minimize(inputs) + + for _, ctx := range progs { inp := ctx.(*Item) + corpus.progsMap[inp.Sig] = inp corpus.saveProgram(inp.Prog, inp.Signal) for area := range inp.areas { -- cgit mrf-deployment