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))); |