Branch Coverage

lib/overload/substr.xs
Criterion Covered Total %
branch 41 90 45.5


line true false branch
38 0 1 PUSHMARK(SP);
39 0 1 XPUSHs(mg->mg_obj);
40 0 1 XPUSHs(ctx->offset);
41 1 0 if(ctx->length)
42 0 1 XPUSHs(ctx->length);
44 0 0 XPUSHs(&PL_sv_undef);
56 1 0 FREETMPS;
70 0 0 PUSHMARK(SP);
71 0 0 XPUSHs(mg->mg_obj);
72 0 0 XPUSHs(ctx->offset);
73 0 0 if(ctx->length)
74 0 0 XPUSHs(ctx->length);
76 0 0 XPUSHs(&PL_sv_undef);
77 0 0 XPUSHs(sv);
82 0 0 FREETMPS;
94 1 0 if(ctx->length)
104 11 5984 if(!sv_isobject(sv))
127 5983 7 if(!substr_method)
131 3 4 if(PL_op->op_private & OPpSUBSTR_REPL_FIRST) {
140 0 3 PUSHMARK(SP-num_args);
141 1 2 if(num_args < 3)
142 0 1 XPUSHs(&PL_sv_undef);
143 0 3 XPUSHs(replacement);
148 0 3 FREETMPS;
155 3 1 if(PL_op->op_flags & OPf_MOD || LVRET) {
0 3 if(PL_op->op_flags & OPf_MOD || LVRET) {
0 0 if(PL_op->op_flags & OPf_MOD || LVRET) {
163 1 0 if(num_args == 3)
164 1 0 ctx->length = SvREFCNT_inc(POPs);
168 1 0 ctx->offset = SvREFCNT_inc(POPs);
175 0 1 XPUSHs(result);
185 0 3 PUSHMARK(SP-num_args);
191 3 0 result = POPs;
195 3 0 FREETMPS;
198 0 3 XPUSHs(result);
212 1 4 if(!substr_method)
219 4 0 bool rvalue = (GIMME_V != G_VOID) || (PL_op->op_private & OPpTARGET_MY);
4 0 bool rvalue = (GIMME_V != G_VOID) || (PL_op->op_private & OPpTARGET_MY);
225 0 4 EXTEND(SP, 3);
226 0 4 PUSHMARK(SP);
236 4 0 result = POPs;
240 4 0 FREETMPS;
245 4 0 if(rvalue)
246 0 4 XPUSHs(result);
255 6 0 if(!init_done++) {