If no one hollers, I'll replace this function with a more flexible set of functions that are wrappers to the *runops* functions in src/inter_run.c:
void * Parrot_call_sub_(interp, sub, signature, ...) [1] Parrot_Int Parrot_call_sub_ret_int Parrot_Float Parrot_call_sub_ret_float
void * Parrot_call_meth(interp, sub, object, meth, sig, ...) ...
The signature of the current Parrot_call is "vPPP..."
[1] return values covered: void, Parrot_STRING, Parrot_PMC
leo