void
add_function_entry(void *addr, const string *comment, bool isvisible,
                   int call_count)
{
    FunctionSet::iterator it = function_entries.find(addr);

    if (it == function_entries.end()) {
        new_function_entry(addr, comment ? new string(*comment) : NULL,
                           isvisible, call_count);
    } else {
        Function *f = (*it).second;
        if (comment) {
            f->AppendComment(comment);
        } else if (f->comment) {
            f->isvisible = true;
        }
        f->call_count += call_count;
    }
}