zlktree: replace std::vector<bool> by bitvect in ACD

On the example from previous patch, the number of instruction fetches
goes from 18490399159 down to 18248898077.

* spot/twaalgos/zlktree.cc, spot/twaalgos/zlktree.hh (acd): Use
bitvect instead of std::vector<bool> in nodes.  This make is easier to
update an edge of a bitvector shared by multiple nodes set after
pruning non-maximal sets from an SCC.  Also compute the set of states
hit by the edges at the very end, once all nodes are known.
* spot/twaalgos/sccinfo.cc, spot/twaalgos/sccinfo.hh,
spot/twaalgos/genem.cc, spot/twaalgos/genem.hh: Adjust to work with
bitvect as filter.
This commit is contained in:
Alexandre Duret-Lutz 2021-09-10 14:07:26 +02:00
parent 6aa2079079
commit 2d1cb0ddcd
6 changed files with 41 additions and 33 deletions

View file

@ -271,7 +271,7 @@ namespace spot
bool
maximal_accepting_loops_for_scc(const scc_info& si, unsigned scc,
const acc_cond& forced_acc,
const std::vector<bool>& keep,
const bitvect& keep,
std::function<void(const scc_info&,
unsigned)> callback)
{