Branch Coverage

src/xs/Hash.cc
Criterion Covered Total %
branch 24 44 54.5


line true false branch
6 2 0 sv = (SV*)newHV();
7 2 0 reserve(l.size());
9 4 2 for (auto ptr = l.begin(); ptr != end; ++ptr) store(ptr->first, ptr->second);
4 0 for (auto ptr = l.begin(); ptr != end; ++ptr) store(ptr->first, ptr->second);
13 1 123 if (!sv) throw std::logic_error("store: empty object");
1 0 if (!sv) throw std::logic_error("store: empty object");
15 122 1 if (val) SvREFCNT_inc_simple_void_NN(val);
16 1 0 else val = newSV(0);
17 123 0 SV** ret = hv_store((HV*)sv, key.data(), key.length(), val, hash);
18 0 123 if (!ret) SvREFCNT_dec_NN(val);
0 0 if (!ret) SvREFCNT_dec_NN(val);
23 0 1 auto sz = HvUSEDKEYS(hv) * 2;
0 0 auto sz = HvUSEDKEYS(hv) * 2;
24 0 1 if (!sz) return 0;
25 1 0 EXTEND(sp, (I32)sz);
0 1 EXTEND(sp, (I32)sz);
0 0 EXTEND(sp, (I32)sz);
28 8 1 for (STRLEN bucket_num = 0; bucket_num <= hvmax; ++bucket_num)
29 2 8 for (const HE* he = hvarr[bucket_num]; he; he = HeNEXT(he)) {
30 2 0 *++sp = sv_2mortal(newSVpvn(HeKEY(he), HeKLEN(he)));
2 0 *++sp = sv_2mortal(newSVpvn(HeKEY(he), HeKLEN(he)));
31 2 0 *++sp = sv_2mortal(SvREFCNT_inc_NN(HeVAL(he)));