mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
mbqi
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
34e0e26e3d
commit
1ee2ba2a9b
17 changed files with 132 additions and 80 deletions
|
@ -21,9 +21,33 @@ Revision History:
|
|||
#ifdef Z3DEBUG
|
||||
|
||||
void region::display_mem_stats(std::ostream & out) const {
|
||||
out << "num. objects: " << m_chuncks.size() << "\n";
|
||||
out << "num. objects: " << m_chunks.size() << "\n";
|
||||
}
|
||||
|
||||
void * region::allocate(size_t size) {
|
||||
char * r = alloc_svect(char, size);
|
||||
m_chunks.push_back(r);
|
||||
return r;
|
||||
}
|
||||
|
||||
void region::reset() {
|
||||
for (auto* c : m_chunks)
|
||||
dealloc_svect(c);
|
||||
m_chunks.reset();
|
||||
m_scopes.reset();
|
||||
}
|
||||
|
||||
void region::pop_scope() {
|
||||
unsigned old_size = m_scopes.back();
|
||||
m_scopes.pop_back();
|
||||
ptr_vector<char>::iterator it = m_chunks.begin() + old_size;
|
||||
ptr_vector<char>::iterator end = m_chunks.end();
|
||||
for (; it != end; ++it)
|
||||
dealloc_svect(*it);
|
||||
m_chunks.shrink(old_size);
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
|
||||
#include "util/tptr.h"
|
||||
|
|
|
@ -25,44 +25,23 @@ Revision History:
|
|||
#include "util/vector.h"
|
||||
|
||||
class region {
|
||||
ptr_vector<char> m_chuncks;
|
||||
ptr_vector<char> m_chunks;
|
||||
unsigned_vector m_scopes;
|
||||
public:
|
||||
~region() {
|
||||
reset();
|
||||
}
|
||||
|
||||
void * allocate(size_t size) {
|
||||
char * r = alloc_svect(char, size);
|
||||
m_chuncks.push_back(r);
|
||||
return r;
|
||||
}
|
||||
|
||||
void reset() {
|
||||
ptr_vector<char>::iterator it = m_chuncks.begin();
|
||||
ptr_vector<char>::iterator end = m_chuncks.end();
|
||||
for (; it != end; ++it) {
|
||||
dealloc_svect(*it);
|
||||
}
|
||||
m_chuncks.reset();
|
||||
m_scopes.reset();
|
||||
}
|
||||
void * allocate(size_t size);
|
||||
|
||||
void reset();
|
||||
|
||||
void push_scope() {
|
||||
m_scopes.push_back(m_chuncks.size());
|
||||
m_scopes.push_back(m_chunks.size());
|
||||
}
|
||||
|
||||
|
||||
void pop_scope() {
|
||||
unsigned old_size = m_scopes.back();
|
||||
m_scopes.pop_back();
|
||||
ptr_vector<char>::iterator it = m_chuncks.begin() + old_size;
|
||||
ptr_vector<char>::iterator end = m_chuncks.end();
|
||||
for (; it != end; ++it) {
|
||||
dealloc_svect(*it);
|
||||
}
|
||||
m_chuncks.shrink(old_size);
|
||||
}
|
||||
void pop_scope();
|
||||
|
||||
void pop_scope(unsigned num_scopes) {
|
||||
for (unsigned i = 0; i < num_scopes; i++) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue