3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-22 19:17:53 +00:00

Merge branch 'master' into polysat

This commit is contained in:
Jakob Rath 2022-07-21 12:56:50 +02:00
commit e168d8a2eb
109 changed files with 4372 additions and 2743 deletions

View file

@ -91,7 +91,7 @@ private:
}
void dec_ref(unsigned sz, value * vs) {
if (C::ref_count)
if (C::ref_count)
for (unsigned i = 0; i < sz; i++)
m_vmanager.dec_ref(vs[i]);
}
@ -151,7 +151,7 @@ private:
size_t new_capacity = curr_capacity == 0 ? 2 : (3 * curr_capacity + 1) >> 1;
value * new_vs = allocate_values(new_capacity);
if (curr_capacity > 0) {
for (size_t i = 0; i < curr_capacity; i++)
for (size_t i = 0; i < curr_capacity; i++)
new_vs[i] = vs[i];
deallocate_values(vs);
}
@ -177,7 +177,7 @@ private:
inc_ref(v);
vs[sz] = v;
sz++;
}
}
void rpush_back(cell * c, value const & v) {
SASSERT(c->kind() == ROOT);
@ -269,7 +269,7 @@ public:
}
value_manager & manager() { return m_vmanager; }
void mk(ref & r) {
dec_ref(r.m_ref);
cell * new_c = mk(ROOT);
@ -283,12 +283,12 @@ public:
r.m_ref = nullptr;
r.m_updt_counter = 0;
}
void copy(ref const & s, ref & t) {
inc_ref(s.m_ref);
dec_ref(t.m_ref);
t.m_ref = s.m_ref;
t.m_updt_counter = 0;
t.m_updt_counter = 0;
}
unsigned size(ref const & r) const {
@ -310,17 +310,15 @@ public:
}
void check_size(cell* c) const {
unsigned r;
while (c) {
switch (c->kind()) {
case SET:
break;
case PUSH_BACK:
r = size(c->next());
// ? SASSERT(c->idx() == size(c->next()));
break;
case POP_BACK:
r = size(c->next());
SASSERT(c->idx() == r);
SASSERT(c->idx() == size(c->next()));
break;
case ROOT:
return;
@ -333,7 +331,7 @@ public:
value const & get(ref const & r, unsigned i) const {
SASSERT(i < size(r));
unsigned trail_sz = 0;
cell * c = r.m_ref;
@ -451,7 +449,7 @@ public:
inc_ref(v);
new_c->m_elem = v;
new_c->m_next = r.m_ref;
r.m_ref = new_c;
r.m_ref = new_c;
SASSERT(new_c->m_ref_count == 1);
}
@ -536,7 +534,7 @@ public:
r.m_updt_counter = 0;
SASSERT(r.root());
}
void reroot(ref & r) {
if (r.root())
return;
@ -545,7 +543,7 @@ public:
unsigned r_sz = size(r);
unsigned trail_split_idx = r_sz / C::factor;
unsigned i = 0;
cell * c = r.m_ref;
cell * c = r.m_ref;
while (c->kind() != ROOT && i < trail_split_idx) {
cs.push_back(c);
c = c->next();
@ -556,7 +554,7 @@ public:
unfold(c);
}
DEBUG_CODE(check_size(c););
SASSERT(c->kind() == ROOT);
SASSERT(c->kind() == ROOT);
for (i = cs.size(); i-- > 0; ) {
cell * p = cs[i];
SASSERT(c->m_kind == ROOT);
@ -574,7 +572,7 @@ public:
case PUSH_BACK:
c->m_kind = POP_BACK;
if (sz == capacity(vs))
expand(vs);
expand(vs);
vs[sz] = p->m_elem;
++sz;
c->m_idx = sz;