msgsv = newSV(0); do_join(msgsv, &PL_sv_no, MARK+1, SP);
msgsv = my_do_join(MARK+1, SP);
static XS(MPXS_Apache__Log_dispatch){    dXSARGS;    SV *msgsv;    int level;    char *name = GvNAME(CvGV(cv));    if (items < 2) {        Perl_croak(aTHX_ "usage: %s::%s(obj, ...)",                   mpxs_cv_name());    }    if (items > 2) {        msgsv = newSV(0);        do_join(msgsv, &PL_sv_no, MARK+1, SP);    }    else {        msgsv = ST(1);        (void)SvREFCNT_inc(msgsv);    }    switch (*name) {      case 'e':        if (*(name + 1) == 'r') {            level = APLOG_ERR;            break;        }        level = APLOG_EMERG;        break;      case 'w':        level = APLOG_WARNING;        break;      case 'n':        level = APLOG_NOTICE;        break;      case 'i':        level = APLOG_INFO;        break;      case 'd':        level = APLOG_DEBUG;        break;      case 'a':        level = APLOG_ALERT;        break;      case 'c':        level = APLOG_CRIT;        break;      default:        level = APLOG_ERR; /* should never get here */        break;    };    mpxs_ap_log_error(aTHX_ level, ST(0), msgsv);    SvREFCNT_dec(msgsv);    XSRETURN_EMPTY;}