Branch Coverage

src/xs/Sub.cc
Criterion Covered Total %
branch 63 126 50.0


line true false branch
13 5 0 throw std::invalid_argument(panda::string("can't locate super method '") + name() + "' via package '" + stash().name() + "'");
5 0 throw std::invalid_argument(panda::string("can't locate super method '") + name() + "' via package '" + stash().name() + "'");
5 0 throw std::invalid_argument(panda::string("can't locate super method '") + name() + "' via package '" + stash().name() + "'");
5 0 throw std::invalid_argument(panda::string("can't locate super method '") + name() + "' via package '" + stash().name() + "'");
5 0 throw std::invalid_argument(panda::string("can't locate super method '") + name() + "' via package '" + stash().name() + "'");
5 0 throw std::invalid_argument(panda::string("can't locate super method '") + name() + "' via package '" + stash().name() + "'");
5 0 throw std::invalid_argument(panda::string("can't locate super method '") + name() + "' via package '" + stash().name() + "'");
5 0 throw std::invalid_argument(panda::string("can't locate super method '") + name() + "' via package '" + stash().name() + "'");
17 301 0 dTHX; dSP; ENTER; SAVETMPS;
301 0 dTHX; dSP; ENTER; SAVETMPS;
18 0 301 PUSHMARK(SP);
0 0 PUSHMARK(SP);
20 25 276 if (args.self) XPUSHs(args.self);
0 25 if (args.self) XPUSHs(args.self);
0 0 if (args.self) XPUSHs(args.self);
21 4 297 if (args.scalars) for (size_t i = 0; i < args.items; ++i) XPUSHs(args.scalars[i] ? args.scalars[i].get() : &PL_sv_undef);
8 4 if (args.scalars) for (size_t i = 0; i < args.items; ++i) XPUSHs(args.scalars[i] ? args.scalars[i].get() : &PL_sv_undef);
0 8 if (args.scalars) for (size_t i = 0; i < args.items; ++i) XPUSHs(args.scalars[i] ? args.scalars[i].get() : &PL_sv_undef);
0 0 if (args.scalars) for (size_t i = 0; i < args.items; ++i) XPUSHs(args.scalars[i] ? args.scalars[i].get() : &PL_sv_undef);
8 0 if (args.scalars) for (size_t i = 0; i < args.items; ++i) XPUSHs(args.scalars[i] ? args.scalars[i].get() : &PL_sv_undef);
22 474 297 else for (size_t i = 0; i < args.items; ++i) XPUSHs(args.list[i] ? args.list[i] : &PL_sv_undef);
0 474 else for (size_t i = 0; i < args.items; ++i) XPUSHs(args.list[i] ? args.list[i] : &PL_sv_undef);
0 0 else for (size_t i = 0; i < args.items; ++i) XPUSHs(args.list[i] ? args.list[i] : &PL_sv_undef);
470 4 else for (size_t i = 0; i < args.items; ++i) XPUSHs(args.list[i] ? args.list[i] : &PL_sv_undef);
25 175 126 if (!maxret && !avr) flags |= G_DISCARD;
173 2 if (!maxret && !avr) flags |= G_DISCARD;
26 301 0 size_t count = call_sv((SV*)cv, flags|G_EVAL);
30 301 0 if (SvTRUE(errsv)) {
0 301 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 301 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
301 0 if (SvTRUE(errsv)) {
301 0 if (SvTRUE(errsv)) {
300 1 if (SvTRUE(errsv)) {
0 300 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
0 0 if (SvTRUE(errsv)) {
1 300 if (SvTRUE(errsv)) {
31 1 1 while (count > 0) { POPs; --count; }
32 1 0 PUTBACK; FREETMPS; LEAVE;
1 0 PUTBACK; FREETMPS; LEAVE;
1 0 PUTBACK; FREETMPS; LEAVE;
34 1 0 GvSV(PL_errgv) = newSVpvs("");
38 4 296 auto nret = count > maxret ? maxret : count;
40 298 2 if (!avr) {
41 2 298 while (count > maxret) { POPs; --count; }
42 135 298 while (count > 0) ret[--count] = SvREFCNT_inc_NN(POPs);
44 2 0 else if (count) {
46 2 0 AV* av = *avr = newAV();
47 2 0 av_extend(av, count-1);
50 6 2 while (count--) svlist[count] = SvREFCNT_inc_NN(POPs);
54 97 203 PUTBACK; FREETMPS; LEAVE;
97 0 PUTBACK; FREETMPS; LEAVE;
300 0 PUTBACK; FREETMPS; LEAVE;