Branch Coverage

XS.xs
Criterion Covered Total %
branch 117 252 46.4


line true false branch
75 144 0 stashname = HvNAME(stash);
144 0 stashname = HvNAME(stash);
0 144 stashname = HvNAME(stash);
0 0 stashname = HvNAME(stash);
144 0 stashname = HvNAME(stash);
0 144 stashname = HvNAME(stash);
77 0 144 if (!stashname)
81 0 144 if (level > 100)
85 33 111 if(!cache) {
91 24 87 if(cache_entry)
98 100 20 isa = (gvp && (gv = *gvp) && gv != (GV*)&PL_sv_undef) ? GvAV(gv) : NULL;
100 0 isa = (gvp && (gv = *gvp) && gv != (GV*)&PL_sv_undef) ? GvAV(gv) : NULL;
100 0 isa = (gvp && (gv = *gvp) && gv != (GV*)&PL_sv_undef) ? GvAV(gv) : NULL;
99 100 20 if(isa && AvFILLp(isa) >= 0) {
82 18 if(isa && AvFILLp(isa) >= 0) {
112 111 29 while(items--) {
115 0 111 if(!isa_item_stash) {
126 82 29 if(items == 0 && AvFILLp(seqs) == -1) {
53 29 if(items == 0 && AvFILLp(seqs) == -1) {
147 59 53 while(subrv_items--) {
171 0 29 Newz(0xdead, heads, AvFILLp(seqs)+1, I32);
180 87 29 while(seqs_items--) {
183 77 10 if(seq_items > 0) {
185 91 77 while(seq_items--) {
190 91 0 if(he) {
196 27 64 if(SvIOK(val)) {
221 366 122 for(s = 0; s <= AvFILLp(seqs); s++) {
225 126 240 if(!seq) continue; /* skip empty seqs */
228 120 120 if(!winner) {
237 91 29 if((tail_entry = hv_fetch_ent(tails, cand, 0, 0))
238 91 0 && (val = HeVAL(tail_entry))
239 27 64 && (SvIVX(val) > 0))
246 178 35 if(!sv_cmp(seqhead, winner)) {
254 87 91 if(new_head > AvFILLp(seq)) {
275 29 93 if(!cand) {
282 0 93 if(!winner) {
289 0 0 for (i = 0; i <= av_len(retval); i++) {
313 87 33 if(!made_mortal_cache) {
315 0 87 if(!hv_store(cache, stashname, stashname_len, (SV*)retval, 0)) {
326 124 23 for (i = startingblock; i >= 0; i--) {
327 92 32 if(CxTYPE((PERL_CONTEXT*)(&cxstk[i])) == CXt_SUB) return i;
366 1 26 if(sv_isobject(self))
373 27 0 hvname = HvNAME(selfstash);
27 0 hvname = HvNAME(selfstash);
0 27 hvname = HvNAME(selfstash);
0 0 hvname = HvNAME(selfstash);
27 0 hvname = HvNAME(selfstash);
0 27 hvname = HvNAME(selfstash);
374 0 27 if (!hvname)
380 54 26 for(i = 0; i < 2; i++) {
384 1 57 while (cxix < 0) {
385 1 0 if(top_si->si_type == PERLSI_MAIN)
392 57 0 if(CxTYPE((PERL_CONTEXT*)(&ccstack[cxix])) != CXt_SUB
393 57 0 || (PL_DBsub && GvCV(PL_DBsub) && ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))) {
0 57 || (PL_DBsub && GvCV(PL_DBsub) && ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))) {
0 0 || (PL_DBsub && GvCV(PL_DBsub) && ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))) {
400 57 0 if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub)) {
0 57 if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub)) {
0 0 if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub)) {
0 0 if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub)) {
401 0 0 if(CxTYPE((PERL_CONTEXT*)(&ccstack[dbcxix])) != CXt_SUB) {
410 0 57 if(!isGV(cvgv)) {
420 57 0 if (SvPOK(sv)) {
430 0 57 if(!subname)
435 4 53 if(subname_len == 8 && strEQ(subname, "__ANON__")) {
4 0 if(subname_len == 8 && strEQ(subname, "__ANON__")) {
452 3 23 if((cache_entry = hv_fetch_ent(nmcache, cachekey, 0, 0))) {
454 0 3 if(val == &PL_sv_undef) {
455 0 0 if(throw_nomethod)
459 0 3 XPUSHs(sv_2mortal(newRV_inc(val)));
473 30 0 while (entries--) {
476 23 7 if(sv_eq(linear_sv, stashname))
480 23 0 if(entries > 0) {
484 38 4 while (entries--) {
488 0 38 if(cc3_mro) {
490 0 0 if(he_cc3_mro_class) {
492 0 0 if(SvROK(cc3_mro_class_sv)) {
495 0 0 if(svp_cc3_mro_class_methods) {
497 0 0 if(SvROK(cc3_mro_class_methods_sv)) {
499 0 0 if(hv_exists_ent(cc3_mro_class_methods, sub_sv, 0))
509 0 38 if (!cstash) {
510 0 0 if (ckWARN(WARN_MISC))
519 19 19 if (!gvp) continue;
524 0 19 if (SvTYPE(candidate) != SVt_PVGV)
526 19 0 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
19 0 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
19 0 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
529 0 19 if (!hv_store_ent(nmcache, cachekey, (SV*)cand_cv, 0)) {
532 0 19 XPUSHs(sv_2mortal(newRV_inc((SV*)cand_cv)));
539 0 4 if (!hv_store_ent(nmcache, cachekey, &PL_sv_undef, 0)) {
542 1 3 if(throw_nomethod)
560 10 0 if(items < 1 || items > 2)
0 10 if(items < 1 || items > 2)
564 0 10 if(items == 2) cache = (HV*)SvRV(ST(1));
567 0 10 if(!class_stash)
568 0 0 Perl_croak(aTHX_ "No such class: '%s'!", SvPV_nolen(classname));
577 45 10 while(res_items--) {
579 0 45 XPUSHs(sv_2mortal(newSVsv(res_item)));
594 0 0 XPUSHs(sv_2mortal(newSViv(PL_sub_generation)));
618 0 0 if(items < 1 || items > 2)
0 0 if(items < 1 || items > 2)
623 0 0 if(!class_stash)
624 0 0 Perl_croak(aTHX_ "No such class: '%s'!", SvPV_nolen(classname));
626 0 0 if(items == 2) cache = (HV*)SvRV(ST(1));
631 0 0 if(!hv_store(our_c3mro, "MRO", 3, (SV*)newRV_noinc((SV*)class_mro), 0)) {
636 0 0 if(!hv_store_ent(hv, classname, (SV*)newRV_noinc((SV*)our_c3mro), 0)) {
645 0 0 while(mroitems--) {
649 0 0 if(!mro_stash) continue;
651 0 0 if(!has_ovf) {
653 0 0 if(ovfp) has_ovf = *ovfp;
657 0 0 while((he = hv_iternext(mro_stash))) {
666 0 0 if(hv_exists_ent(methods, mskey, 0)) continue;
669 0 0 if(SvTYPE(msval) != SVt_PVGV || !(code = GvCVu(msval)))
0 0 if(SvTYPE(msval) != SVt_PVGV || !(code = GvCVu(msval)))
0 0 if(SvTYPE(msval) != SVt_PVGV || !(code = GvCVu(msval)))
672 0 0 if((ourent = hv_fetch_ent(class_stash, mskey, 0, 0))) {
674 0 0 if(val && SvTYPE(val) == SVt_PVGV && GvCVu(val))
0 0 if(val && SvTYPE(val) == SVt_PVGV && GvCVu(val))
0 0 if(val && SvTYPE(val) == SVt_PVGV && GvCVu(val))
0 0 if(val && SvTYPE(val) == SVt_PVGV && GvCVu(val))
682 0 0 if( !hv_store(meth_hash, "orig", 4, orig, 0)
683 0 0 || !hv_store(meth_hash, "code", 4, newRV_inc((SV*)code), 0)
684 0 0 || !hv_store_ent(methods, mskey, newRV_noinc((SV*)meth_hash), 0) ) {
690 0 0 if(!hv_store(our_c3mro, "methods", 7, newRV_noinc((SV*)methods), 0)) {
693 0 0 if(has_ovf) {
694 0 0 if(!hv_store(our_c3mro, "has_overload_fallback", 21, SvREFCNT_inc(has_ovf), 0)) {