mirror of
https://github.com/Z3Prover/z3
synced 2025-06-06 14:13:23 +00:00
Merge pull request #166 from hguenther/unstable
Improve filter_rules performance
This commit is contained in:
commit
3d7785cc18
1 changed files with 3 additions and 3 deletions
|
@ -79,13 +79,13 @@ namespace datalog {
|
||||||
|
|
||||||
filter_key * key = alloc(filter_key, m);
|
filter_key * key = alloc(filter_key, m);
|
||||||
mk_new_rule_tail(m, pred, non_local_vars, filter_domain, key->filter_args, key->new_pred);
|
mk_new_rule_tail(m, pred, non_local_vars, filter_domain, key->filter_args, key->new_pred);
|
||||||
func_decl * filter_decl = 0;
|
filter_cache::obj_map_entry *entry = m_tail2filter.insert_if_not_there2(key, 0);
|
||||||
if (!m_tail2filter.find(key, filter_decl)) {
|
func_decl*& filter_decl = entry->get_data().m_value;
|
||||||
|
if (!filter_decl) {
|
||||||
filter_decl = m_context.mk_fresh_head_predicate(pred->get_decl()->get_name(), symbol("filter"),
|
filter_decl = m_context.mk_fresh_head_predicate(pred->get_decl()->get_name(), symbol("filter"),
|
||||||
filter_domain.size(), filter_domain.c_ptr(), pred->get_decl());
|
filter_domain.size(), filter_domain.c_ptr(), pred->get_decl());
|
||||||
|
|
||||||
m_pinned.push_back(filter_decl);
|
m_pinned.push_back(filter_decl);
|
||||||
m_tail2filter.insert(key, filter_decl);
|
|
||||||
app_ref filter_head(m);
|
app_ref filter_head(m);
|
||||||
filter_head = m.mk_app(filter_decl, key->filter_args.size(), key->filter_args.c_ptr());
|
filter_head = m.mk_app(filter_decl, key->filter_args.size(), key->filter_args.c_ptr());
|
||||||
app * filter_tail = key->new_pred;
|
app * filter_tail = key->new_pred;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue