Branch Coverage

lib/Devel/MAT/Dumper.xs
Criterion Covered Total %
branch 208 334 62.2


line true false branch
80 0 0 if(!tmpsv)
260 27870 32080 if(s)
304 68903 80662 if(o->op_flags & OPf_KIDS) {
305 77651 68903 for (kid = ((UNOP*)o)->op_first; kid; kid = OpSIBLING(kid)) {
146554 68903 for (kid = ((UNOP*)o)->op_first; kid; kid = OpSIBLING(kid)) {
310 0 149565 if(OP_CLASS(o) == OA_PMOP &&
811 148754 if(OP_CLASS(o) == OA_PMOP &&
313 775 36 o->op_type != OP_SPLIT &&
317 47 728 (kid = PMOP_pmreplroot(cPMOPx(o))))
329 127 79743 write_svptr(fh, SvOBJECT(sv) ? (SV*)SvSTASH(sv) : NULL);
335 7166 0 sizeof(XPVGV) + (isGV_with_GP(gv) ? sizeof(struct gp) : 0));
0 7166 sizeof(XPVGV) + (isGV_with_GP(gv) ? sizeof(struct gp) : 0));
337 7166 0 if(isGV_with_GP(gv)) {
7166 0 if(isGV_with_GP(gv)) {
349 7166 0 write_svptr(fh, (SV*)GvIO(gv));
7166 0 write_svptr(fh, (SV*)GvIO(gv));
354 7166 0 write_str(fh, GvFILE(gv));
380 5773 21364 switch(SvTYPE(sv)) {
389 21188 5949 if(SvPOK(sv))
391 0 27137 if(SvOOK(sv)) {
393 0 0 SvOOK_offset(sv, offset);
401 27129 8 (SvUOK(sv) ? 0x02 : 0) |
405 5839 21298 write_uint(fh, SvIOK(sv) ? SvUVX(sv) : 0);
406 134 27003 write_nv(fh, SvNOK(sv) ? SvNVX(sv) : 0.0);
407 21188 5949 write_uint(fh, SvPOK(sv) ? SvCUR(sv) : 0);
417 21188 5949 if(SvPOK(sv)) {
419 21188 0 if(max_string > -1 && len > max_string)
427 21206 5931 if(SvPOKp(sv) && SvIsCOW_shared_hash(sv)) {
19466 1740 if(SvPOKp(sv) && SvIsCOW_shared_hash(sv)) {
9743 9723 if(SvPOKp(sv) && SvIsCOW_shared_hash(sv)) {
456 1 7467 int len = (av == PL_curstack) ? (PL_stack_sp - PL_stack_base + 1) :
468 50648 7468 for(i = 0; i < len; i++)
477 1357 234 if(HvARRAY(hv)) {
479 53362 1357 for(bucket = 0; bucket <= HvMAX(hv); bucket++) {
483 21664 53362 for(he = HvARRAY(hv)[bucket]; he; he = he->hent_next) {
487 6870 14794 if(!HvSHAREKEYS(hv))
506 50954 1335 for(bucket = 0; bucket <= HvMAX(hv); bucket++) {
508 21664 50954 for(he = HvARRAY(hv)[bucket]; he; he = he->hent_next) {
510 0 21664 char *keypv = HePV(he, keylen);
520 0 21664 write_ptr(fh, hek_is_shared ? hek : NULL);
522 14794 6870 write_svptr(fh, is_strtab ? NULL : HeVAL(he));
535 88 1220 if(SvOOK(hv) && HvAUX(hv))
541 1074 234 if(HvARRAY(hv) && nkeys)
1052 22 if(HvARRAY(hv) && nkeys)
549 283 0 if(SvOOK(stash) && HvAUX(stash))
553 216 67 if(mro_meta) {
580 67 216 int nkeys = write_hv_header(fh, stash,
591 283 0 write_str(fh, HvNAME(stash));
283 0 write_str(fh, HvNAME(stash));
0 283 write_str(fh, HvNAME(stash));
0 0 write_str(fh, HvNAME(stash));
0 283 write_str(fh, HvNAME(stash));
594 283 0 if(HvARRAY(stash))
601 3349 2604 PADLIST *pl = (is_xsub ? NULL : CvPADLIST(cv));
615 3349 2604 if(!CvISXSUB(cv) && !CvCONST(cv) && (start = CvSTART(cv))) {
3346 3 if(!CvISXSUB(cv) && !CvCONST(cv) && (start = CvSTART(cv))) {
3122 224 if(!CvISXSUB(cv) && !CvCONST(cv) && (start = CvSTART(cv))) {
616 2955 167 if(start->op_type == OP_NEXTSTATE)
621 5608 345 (CvCLONED(cv) ? 0x02 : 0) |
3349 2604 (CvCLONED(cv) ? 0x02 : 0) |
623 5817 136 (CvWEAKOUTSIDE(cv) ? 0x08 : 0) |
625 5290 663 (CvCVGV_RC(cv) ? 0x10 : 0) |
631 5953 0 (CvLEXICAL(cv) ? 0x20 : 0) |
634 3349 2604 if(!is_xsub && !CvCONST(cv))
3346 3 if(!is_xsub && !CvCONST(cv))
650 0 5953 if(CvNAMED(cv))
662 1912 4041 if(CvCONST(cv))
668 5793 160 if(CvFILE(cv))
674 0 5953 if(CvNAMED(cv))
681 1 5952 if(cv == PL_main_cv && PL_main_root)
1 0 if(cv == PL_main_cv && PL_main_root)
686 3348 2604 else if(!is_xsub && !CvCONST(cv) && CvROOT(cv))
3345 3 else if(!is_xsub && !CvCONST(cv) && CvROOT(cv))
2963 382 else if(!is_xsub && !CvCONST(cv) && CvROOT(cv))
690 3125 2828 if(pl) {
703 28652 3125 for(padix = 1; padix <= padix_max; padix++) {
705 1233 27419 if(!pn)
713 4692 22727 if(PadnameFLAGS(pn)) {
716 1165 3527 if(PadnameOUTER(pn)) flags |= 0x01;
717 78 4614 if(PadnameIsSTATE(pn)) flags |= 0x02;
718 3459 1233 if(PadnameLVALUE(pn)) flags |= 0x04;
719 0 4692 if(PadnameFLAGS(pn) & PADNAMEt_TYPED) flags |= 0x08;
720 556 4136 if(PadnameFLAGS(pn) & PADNAMEt_OUR) flags |= 0x10;
722 4136 0 if(flags) {
729 0 4692 if(PadnameIsFIELD(pn)) {
743 3153 3125 for(depth = 1; depth <= PadlistMAX(pl); depth++) {
755 0 5953 FREETMPS;
796 0 0 for(i = 0; i < nfields; i++)
804 0 0 int nkeys = write_hv_header(fh, cls,
816 0 0 write_str(fh, HvNAME(cls));
0 0 write_str(fh, HvNAME(cls));
0 0 write_str(fh, HvNAME(cls));
0 0 write_str(fh, HvNAME(cls));
0 0 write_str(fh, HvNAME(cls));
819 0 0 if(HvARRAY(cls))
825 0 0 int nfields = fields ? PadnamelistMAX(fields)+1 : 0;
826 0 0 for(int i = 0; i < nfields; i++) {
844 0 0 while(p <= SP) {
846 0 0 switch(type) {
867 0 226 if((he = hv_fetch_ent(helper_per_package, classname, 0, 0)))
870 0 0 if(helper) {
876 0 0 if(ret > 0)
879 0 0 FREETMPS;
897 28018 2749 type = SvROK(sv) ? PMAT_SVtREF : PMAT_SVtSCALAR; break;
913 371 1220 if(HvNAME(sv) && HvSTASH_IS_CLASS(sv))
283 88 if(HvNAME(sv) && HvSTASH_IS_CLASS(sv))
0 283 if(HvNAME(sv) && HvSTASH_IS_CLASS(sv))
0 0 if(HvNAME(sv) && HvSTASH_IS_CLASS(sv))
283 0 if(HvNAME(sv) && HvSTASH_IS_CLASS(sv))
917 371 1220 if(HvNAME(sv))
283 88 if(HvNAME(sv))
0 283 if(HvNAME(sv))
0 0 if(HvNAME(sv))
933 864 27154 if(type == PMAT_SVtSCALAR && !SvOK(sv))
936 17 27137 if(type == PMAT_SVtSCALAR && SvIsBOOL(sv))
938 9 8 type = (SvIVX(sv)) ? PMAT_SVtYES : PMAT_SVtNO;
968 5922 73948 if(SvMAGICAL(sv)) {
970 5922 5922 for(mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
976 2 5920 if(mg->mg_len == HEf_SVKEY)
982 1 5921 if(mg->mg_type == PERL_MAGIC_ext &&
983 0 1 mg->mg_ptr && mg->mg_len != HEf_SVKEY) {
0 0 mg->mg_ptr && mg->mg_len != HEf_SVKEY) {
989 0 0 if(he)
992 0 0 if(helper) {
998 0 0 if(ret > 0)
1001 0 0 FREETMPS;
1008 127 79743 if(SvOBJECT(sv)) {
1010 0 353 for(SSize_t i = 0; i <= AvFILL(linearized_mro); i++)
226 127 for(SSize_t i = 0; i <= AvFILL(linearized_mro); i++)
1057 0 0 if(!ctx->structdefs)
1061 0 0 if(!SvOK(idsv)) {
1071 0 0 for(size_t i = 0; i < nfields; i++) {
1087 0 0 for(size_t i = 0; i < nfields; i++)
1339 0 1 if(moreroots)
1340 0 0 nroots += (AvFILL(moreroots)+1) / 2;
1345 61 1 for(i = 0; i < sizeof(roots) / sizeof(roots[0]); i++) {
1349 0 1 if(moreroots) {
1351 0 0 int max = AvFILL(moreroots);
1353 0 0 for(i = 0; i < max; i += 2) {
1362 2 1 for(sp = PL_stack_base; sp <= PL_stack_sp; sp++)
1369 474 1 for(arena = PL_sv_arenaroot; arena; arena = (SV *)SvANY(arena)) {
1373 80106 474 for(sv = arena + 1; sv < arenaend; sv++) {
1374 0 80106 if(sv == tmpsv)
1377 236 79870 if(SvTYPE(sv) == 0xff)
1382 79869 1 if(sv == (const SV *)PL_defstash)
1388 0 1 if(!seen_defstash)
1399 5955 1 while(saveix) {
1407 5954 1 if(type <= SAVEt_ARG0_MAX)
1409 0 5954 else if(type <= SAVEt_ARG1_MAX)
1411 0 0 else if(type <= SAVEt_ARG2_MAX)
1413 0 0 else if(type <= SAVEt_MAX)
1420 5954 1 ANY *a0 = count > 0 ? &PL_savestack[saveix ] : NULL,
1421 0 5954 *a1 = count > 1 ? &PL_savestack[saveix+1] : NULL,
1422 0 1 *a2 = count > 2 ? &PL_savestack[saveix+2] : NULL;
1524 0 0 if(a1->any_ptr != (SV **) &(GvGP((GV *)a0->any_ptr)->gp_cv)) {
1538 0 0 if(a0->any_ptr == &GvSV(PL_defgv)) {
1562 0 1 if(!cx)
1572 0 0 write_str(fh, CopFILE(oldcop));
1588 0 0 if(CxOLD_OP_TYPE(cx) == OP_ENTEREVAL) {
1593 0 0 write_str(fh, CopFILE(oldcop));
1596 0 0 else if(cx->blk_eval.old_namesv)
1604 0 0 write_str(fh, CopFILE(oldcop));
1618 6 1 for(SSize_t i = 0; i <= PL_tmps_ix; i++) {
1624 0 1 if(ctx.structdefs)
1635 0 1 if(!fh)
1648 0 2 if((svp = hv_fetchs(PL_modglobal, "Devel::MAT::Dumper/%helper_per_package", 0)))
1655 0 2 if((svp = hv_fetchs(PL_modglobal, "Devel::MAT::Dumper/%helper_per_magic", 0)))