mirror of
https://github.com/Z3Prover/z3
synced 2025-06-02 20:31:21 +00:00
optimize ~relevancy_propagator_imp() so it just dec refs the exprs in the trail
It avoid doing all the funky watch stuff One extreme Alive2 test case goes from 40s to 28s :)
This commit is contained in:
parent
5e3df9ee77
commit
5d33805c8b
1 changed files with 9 additions and 5 deletions
|
@ -123,7 +123,7 @@ namespace smt {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct relevancy_propagator_imp : public relevancy_propagator {
|
struct relevancy_propagator_imp : public relevancy_propagator {
|
||||||
unsigned m_qhead;
|
unsigned m_qhead = 0;
|
||||||
expr_ref_vector m_relevant_exprs;
|
expr_ref_vector m_relevant_exprs;
|
||||||
uint_set m_is_relevant;
|
uint_set m_is_relevant;
|
||||||
typedef list<relevancy_eh *> relevancy_ehs;
|
typedef list<relevancy_eh *> relevancy_ehs;
|
||||||
|
@ -144,14 +144,18 @@ namespace smt {
|
||||||
unsigned m_trail_lim;
|
unsigned m_trail_lim;
|
||||||
};
|
};
|
||||||
svector<scope> m_scopes;
|
svector<scope> m_scopes;
|
||||||
bool m_propagating;
|
bool m_propagating = false;
|
||||||
|
|
||||||
relevancy_propagator_imp(context & ctx):
|
relevancy_propagator_imp(context & ctx):
|
||||||
relevancy_propagator(ctx), m_qhead(0), m_relevant_exprs(ctx.get_manager()),
|
relevancy_propagator(ctx), m_relevant_exprs(ctx.get_manager()) {}
|
||||||
m_propagating(false) {}
|
|
||||||
|
|
||||||
~relevancy_propagator_imp() override {
|
~relevancy_propagator_imp() override {
|
||||||
undo_trail(0);
|
ast_manager & m = get_manager();
|
||||||
|
unsigned i = m_trail.size();
|
||||||
|
while (i != 0) {
|
||||||
|
--i;
|
||||||
|
m.dec_ref(m_trail[i].get_node());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
relevancy_ehs * get_handlers(expr * n) {
|
relevancy_ehs * get_handlers(expr * n) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue