Exemplo n.º 1
0
void Dumper::visit(Call *call) {
    CallFlags callFlags = call->flags;

    if (!(dumpFlags & DUMP_FLAG_NO_CALL_NO)) {
        os << call->no << " ";
    }
    if (dumpFlags & DUMP_FLAG_THREAD_IDS) {
        os << "@" << std::hex << call->thread_id << std::dec << " ";
    }

    if (callFlags & CALL_FLAG_NON_REPRODUCIBLE) {
        os << strike;
    } else if (callFlags & (CALL_FLAG_FAKE | CALL_FLAG_NO_SIDE_EFFECTS)) {
        os << normal;
    } else {
        os << bold;
    }
    os << call->sig->name << normal;

    os << "(";
    const char *sep = "";
    for (unsigned i = 0; i < call->args.size(); ++i) {
        os << sep;
        if (!(dumpFlags & DUMP_FLAG_NO_ARG_NAMES)) {
            os << italic << call->sig->arg_names[i] << normal << " = ";
        }
        if (call->args[i].value) {
            _visit(call->args[i].value);
        } else {
           os << "?";
        }
        sep = ", ";
    }
    os << ")";

    if (call->ret) {
        os << " = ";
        _visit(call->ret);
    }

    if (callFlags & CALL_FLAG_INCOMPLETE) {
        os << " // " << red << "incomplete" << normal;
    }

    if (!(dumpFlags & DUMP_FLAG_NO_MULTILINE)) {
        os << "\n";

        if (call->backtrace != NULL) {
            os << bold << red << "Backtrace:\n" << normal;
            visit(*call->backtrace);
        }
        if (callFlags & CALL_FLAG_END_FRAME) {
            os << "\n";
        }
    }
}
Exemplo n.º 2
0
void Dumper::visit(Array *array) {
    if (array->values.size() == 1) {
        os << "&";
        _visit(array->values[0]);
    }
    else {
        const char *sep = "";
        os << "{";
        for (auto & value : array->values) {
            os << sep;
            _visit(value);
            sep = ", ";
        }
        os << "}";
    }
}
Exemplo n.º 3
0
 void visit(Array *array) {
     if (array->values.size() == 1) {
         os << "&";
         _visit(array->values[0]);
     }
     else {
         const char *sep = "";
         os << "{";
         for (std::vector<Value *>::iterator it = array->values.begin(); it != array->values.end(); ++it) {
             os << sep;
             _visit(*it);
             sep = ", ";
         }
         os << "}";
     }
 }
Exemplo n.º 4
0
    void visit(Call *call) {
        CallFlags callFlags = call->flags;
        
        if (!(dumpFlags & DUMP_FLAG_NO_CALL_NO)) {
            os << call->no << " ";
        }

        if (callFlags & CALL_FLAG_NON_REPRODUCIBLE) {
            os << strike;
        } else if (callFlags & (CALL_FLAG_FAKE | CALL_FLAG_NO_SIDE_EFFECTS)) {
            os << normal;
        } else {
            os << bold;
        }
        os << call->sig->name << normal;

        os << "(";
        const char *sep = "";
        for (unsigned i = 0; i < call->args.size(); ++i) {
            os << sep;
            if (!(dumpFlags & DUMP_FLAG_NO_ARG_NAMES)) {
                os << italic << call->sig->arg_names[i] << normal << " = ";
            }
            if (call->args[i].value) {
                _visit(call->args[i].value);
            } else {
               os << "?";
            }
            sep = ", ";
        }
        os << ")";

        if (call->ret) {
            os << " = ";
            _visit(call->ret);
        }
        
        if (callFlags & CALL_FLAG_INCOMPLETE) {
            os << " // " << red << "incomplete" << normal;
        }
        
        os << "\n";

        if (callFlags & CALL_FLAG_END_FRAME) {
            os << "\n";
        }
    }
Exemplo n.º 5
0
void JitCodeSpecializer::_visit(U& element, std::function<void(T&)> fn) const {
  // clang-format off
  if constexpr(std::is_same_v<std::remove_const_t<U>, llvm::Module>) {
    // visit all functions in a module
    for (auto& function : element) {
      _visit(function, fn);
    }
  } else if constexpr(std::is_same_v<std::remove_const_t<U>, llvm::Function>) {                                // NOLINT
Exemplo n.º 6
0
void topsort()
{
    int i;
    for(i=0; i<100; ++i)
    {
        if (valid[i])
        _visit(i);
    }
}
Exemplo n.º 7
0
 void visit(Struct *s) {
     const char *sep = "";
     os << "{";
     for (unsigned i = 0; i < s->members.size(); ++i) {
         os << sep << italic << s->sig->member_names[i] << normal << " = ";
         _visit(s->members[i]);
         sep = ", ";
     }
     os << "}";
 }
Exemplo n.º 8
0
void _visit(int i)
{
    if (vis[i] == temp)
        return;
    if (vis[i] == 1)
        return;
    vis[i] = temp;
    ++num;
    int j;
    for(j=0; j<100; ++j)
    {
        if (gph.ar[i][j] == 1)
            _visit(j);
    }
    postnumb[i] = num;
    postnumbed[nnn++] = i;
    printf("%d ", i);
    vis[i] = 1;
}
/**
 * Perform a postorder traversal of a red-black tree
 */
HIDDEN void
postwalkdata(struct bu_rb_node *root,
	     int order,
	     void (*visit)(void),
	     int depth)
{
    /* need function pointer for recasting visit for actual use as a function */
    BU_RB_WALK_FUNC_DATA_DECL(_visit);
    /* make the cast */
    _visit = BU_RB_WALK_FUNC_CAST_AS_DATA_FUNC(visit);

    BU_CKMAG(root, BU_RB_NODE_MAGIC, "red-black node");
    RB_CKORDER(root->rbn_tree, order);

    if (root == RB_NULL(root->rbn_tree))
	return;
    postwalkdata(RB_LEFT_CHILD(root, order), order, visit, depth + 1);
    postwalkdata(RB_RIGHT_CHILD(root, order), order, visit, depth + 1);

    _visit(RB_DATA(root, order), depth);
}
Exemplo n.º 10
0
const char *
Dumper::visitMembers(Struct *s, const char *sep) {
    for (unsigned i = 0; i < s->members.size(); ++i) {
        const char *memberName = s->sig->member_names[i];
        Value *memberValue = s->members[i];

        if (!memberName || !*memberName) {
            // Anonymous structure
            Struct *memberStruct = memberValue->toStruct();
            assert(memberStruct);
            if (memberStruct) {
                sep = visitMembers(memberStruct, sep);
                continue;
            }
        }

        os << sep << italic << memberName << normal << " = ",
        _visit(memberValue);
        sep = ", ";
    }
    return sep;
}
Exemplo n.º 11
0
 void _visit(V* v, T& t)
 {
   t.left().visit(v);
   _visit(v, t.right());
 }
Exemplo n.º 12
0
void Dumper::visit(Repr *r) {
    _visit(r->humanValue);
}
Exemplo n.º 13
0
 void * operator() (trace::Value *node) {
     _visit(node);
     return result;
 }
Exemplo n.º 14
0
 void visit(Repr *r) {
     _visit(r->humanValue);
 }
Exemplo n.º 15
0
 void visit(T* t)
 {
   _visit(t, *this);
 }
Exemplo n.º 16
0
void TraceStackGCVisitor::visit(void* p) {
    _visit(p);
}
Exemplo n.º 17
0
void TraceStackGCVisitor::visitRange(void** start, void** end) {
    while (start < end) {
        _visit(*start);
        start++;
    }
}
Exemplo n.º 18
0
 void visit(T* t)
 {
   _visit(t);
 }
Exemplo n.º 19
0
 void
 apply(trace::Value *node) {
     _visit(node);
 }