コード例 #1
0
ファイル: func_interp.cpp プロジェクト: sukwon0709/byterun
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);
}
コード例 #2
0
ファイル: params.cpp プロジェクト: sukwon0709/byterun
void params::del_value(entry & e) {
    switch (e.second.m_kind) {
    case CPK_NUMERAL:
        if (e.second.m_kind == CPK_NUMERAL)
            dealloc(e.second.m_rat_value);
        break;
    case CPK_EXPR:
    case CPK_SORT:
    case CPK_FUNC_DECL:
        SASSERT(m_manager);
        m_manager->dec_ref(e.second.m_ast_value);
        return;
    default:
        return;
    }
}
コード例 #3
0
ファイル: spc_clause.cpp プロジェクト: Moondee/Artemis
    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);
    }
コード例 #4
0
ファイル: func_interp.cpp プロジェクト: sukwon0709/byterun
void func_entry::set_result(ast_manager & m, expr * r) {
    m.inc_ref(r);
    m.dec_ref(m_result);
    m_result = r;
}