void func_entry::deallocate(ast_manager & m, unsigned arity) { for (unsigned i = 0; i < arity; i++) { m.dec_ref(m_args[i]); } m.dec_ref(m_result); small_object_allocator & allocator = m.get_allocator(); unsigned sz = get_obj_size(arity); allocator.deallocate(sz, this); }
void clause::deallocate(ast_manager & m) { justification_stat j_stat; get_justification_stat(get_justification(), j_stat); ptr_buffer<clause>::iterator it = j_stat.m_parent_clauses.begin(); ptr_buffer<clause>::iterator end = j_stat.m_parent_clauses.end(); for (; it != end; ++it) { clause * parent = *it; parent->del_child(this); } dec_ref(get_justification(), m); unsigned num_lits = get_num_literals(); for (unsigned i = 0; i < num_lits; i++) m.dec_ref(get_literal(i).atom()); unsigned capacity = get_num_literals_capacity(); this->~clause(); m.get_allocator().deallocate(sizeof(clause) + capacity * sizeof(literal), this); }