mirror of
https://github.com/Z3Prover/z3
synced 2025-08-22 19:17:53 +00:00
add op cache
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
023b630b5a
commit
4ef480e2a5
5 changed files with 76 additions and 7 deletions
|
@ -3849,3 +3849,29 @@ bool seq_rewriter::reduce_subsequence(expr_ref_vector& ls, expr_ref_vector& rs,
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
seq_rewriter::op_cache::op_cache(ast_manager& m):
|
||||
m(m),
|
||||
m_trail(m)
|
||||
{}
|
||||
|
||||
expr* seq_rewriter::op_cache::find(decl_kind op, expr* a, expr* b) {
|
||||
op_entry e(op, a, b, nullptr);
|
||||
m_table.find(e);
|
||||
return e.r;
|
||||
}
|
||||
|
||||
void seq_rewriter::op_cache::insert(decl_kind op, expr* a, expr* b, expr* r) {
|
||||
cleanup();
|
||||
if (a) m_trail.push_back(a);
|
||||
if (b) m_trail.push_back(b);
|
||||
if (r) m_trail.push_back(r);
|
||||
m_table.insert(op_entry(op, a, b, r));
|
||||
}
|
||||
|
||||
void seq_rewriter::op_cache::cleanup() {
|
||||
if (m_table.size() >= m_max_cache_size) {
|
||||
m_trail.reset();
|
||||
m_table.reset();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue