- size_t va_count = psi_call_frame_num_var_args(frame);
-
- if (va_count) {
- void **va_types = ecalloc(va_count, sizeof(void *));
- size_t i;
-
- for (i = 0; i < va_count; ++i) {
- struct psi_call_frame_argument *frame_arg;
-
- frame_arg = psi_call_frame_get_var_argument(frame, i);
- va_types[i] = frame->context->ops->query(frame->context,
- PSI_CONTEXT_QUERY_TYPE, &frame_arg->va_type);
- }
-
- frame->context->ops->call_va(frame->context,
- frame,
- frame->decl,
- frame->rpointer,
- frame->pointers,
- va_count,
- va_types);
-
- efree(va_types);
- } else {
- frame->context->ops->call(frame->context,
- frame,
- frame->decl,
- frame->rpointer,
- frame->pointers);
- }