Branch Coverage

xs/ia.xsi
Criterion Covered Total %
branch 201 578 34.7


line true false branch
7 9 46 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
4 51 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
0 55 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
9 0 55 if (!map) croak("Failed to create HashMap::IA");
18 56 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
56 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 56 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 56 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
25 81926 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
81926 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 81926 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 81926 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
28 2 81924 if (!RETVAL) SvREFCNT_dec(value);
35 50026 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
50026 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 50026 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 50026 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
37 7 50019 if (!hashmap_ia_get(self, key, &val)) XSRETURN_UNDEF;
45 80505 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
80505 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 80505 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 80505 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
53 2 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
2 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 2 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 2 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
55 1 1 if (!hashmap_ia_take(self, key, &val)) XSRETURN_UNDEF;
63 4 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
4 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 4 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 4 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
71 16 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
16 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 16 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 16 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
72 0 16 RETVAL = self->size;
79 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
80 0 0 RETVAL = self->max_size;
87 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
88 0 0 RETVAL = (UV)self->default_ttl;
95 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
96 0 0 RETVAL = (UV)self->lru_skip;
103 5 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
5 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 5 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 5 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
104 1 4 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
105 0 5 EXTEND(SP, self->size);
107 304 5 for (i = 0; i < self->capacity; i++) {
108 104 200 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
101 3 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
1 100 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
1 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 1 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
109 0 100 mXPUSHi(self->nodes[i].key);
115 3 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
3 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 3 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 3 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
116 0 3 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
117 0 3 EXTEND(SP, self->size);
119 272 3 for (i = 0; i < self->capacity; i++) {
120 102 170 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
100 2 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 100 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
121 100 0 SV* sv = self->nodes[i].value ? SvREFCNT_inc((SV*)self->nodes[i].value) : &PL_sv_undef;
122 0 100 mXPUSHs(sv);
129 1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
130 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
131 0 1 EXTEND(SP, self->size * 2);
133 16 1 for (i = 0; i < self->capacity; i++) {
134 2 14 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
2 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 2 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
135 0 2 mXPUSHi(self->nodes[i].key);
136 2 0 SV* sv = self->nodes[i].value ? SvREFCNT_inc((SV*)self->nodes[i].value) : &PL_sv_undef;
137 0 2 mXPUSHs(sv);
144 48 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
48 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 48 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 48 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
145 0 48 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
146 96 4 while (self->iter_pos < self->capacity) {
148 44 52 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
44 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 44 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
149 0 44 EXTEND(SP, 2);
150 0 44 mXPUSHi(self->nodes[i].key);
151 0 44 if (GIMME_V == G_SCALAR) XSRETURN(1);
152 44 0 SV* sv = self->nodes[i].value ? SvREFCNT_inc((SV*)self->nodes[i].value) : &PL_sv_undef;
153 0 44 mXPUSHs(sv);
163 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
169 1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
170 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
172 0 1 EXTEND(SP, (count < self->size ? count : self->size) * 2);
173 15 0 while (self->iter_pos < self->capacity && n < count) {
14 1 while (self->iter_pos < self->capacity && n < count) {
175 2 12 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
2 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 2 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
176 0 2 mXPUSHi(self->nodes[i].key);
177 2 0 if (self->nodes[i].value) {
178 0 2 mXPUSHs((SV*)self->nodes[i].value);
179 0 0 } else { XPUSHs(&PL_sv_undef); }
181 0 2 if (HM_UNLIKELY(self->lru_prev)) hashmap_ia_lru_unlink(self, (uint32_t)i);
186 0 1 if (self->iter_pos >= self->capacity) self->iter_pos = 0;
187 1 0 if (self->tombstones > self->capacity / 4 ||
188 1 0 (self->size > 0 && self->tombstones > self->size))
1 0 (self->size > 0 && self->tombstones > self->size))
194 1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
195 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
196 1 0 if (self->lru_prev) {
197 1 0 while (self->lru_tail != HM_LRU_NONE) {
199 0 1 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now >= self->expires_at[idx]) {
0 0 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now >= self->expires_at[idx]) {
0 0 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now >= self->expires_at[idx]) {
202 0 1 EXTEND(SP, 2);
203 0 1 mXPUSHi(self->nodes[idx].key);
204 1 0 if (self->nodes[idx].value) {
205 0 1 mXPUSHs((SV*)self->nodes[idx].value);
206 0 0 } else { XPUSHs(&PL_sv_undef); }
210 1 0 if (self->tombstones > self->capacity / 4 ||
211 1 0 (self->size > 0 && self->tombstones > self->size))
0 1 (self->size > 0 && self->tombstones > self->size))
217 0 0 while (self->iter_pos < self->capacity) {
219 0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
220 0 0 EXTEND(SP, 2);
221 0 0 mXPUSHi(self->nodes[i].key);
222 0 0 if (self->nodes[i].value) {
223 0 0 mXPUSHs((SV*)self->nodes[i].value);
224 0 0 } else { XPUSHs(&PL_sv_undef); }
227 0 0 if (self->tombstones > self->capacity / 4 ||
228 0 0 (self->size > 0 && self->tombstones > self->size))
0 0 (self->size > 0 && self->tombstones > self->size))
240 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
241 0 0 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
242 0 0 if (self->lru_prev) {
243 0 0 while (self->lru_head != HM_LRU_NONE) {
245 0 0 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now >= self->expires_at[idx]) {
0 0 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now >= self->expires_at[idx]) {
0 0 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now >= self->expires_at[idx]) {
248 0 0 EXTEND(SP, 2);
249 0 0 mXPUSHi(self->nodes[idx].key);
250 0 0 if (self->nodes[idx].value) {
251 0 0 mXPUSHs((SV*)self->nodes[idx].value);
252 0 0 } else { XPUSHs(&PL_sv_undef); }
256 0 0 if (self->tombstones > self->capacity / 4 ||
257 0 0 (self->size > 0 && self->tombstones > self->size))
0 0 (self->size > 0 && self->tombstones > self->size))
263 0 0 if (self->iter_pos == 0) self->iter_pos = self->capacity;
264 0 0 while (self->iter_pos > 0) {
266 0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
267 0 0 EXTEND(SP, 2);
268 0 0 mXPUSHi(self->nodes[i].key);
269 0 0 if (self->nodes[i].value) {
270 0 0 mXPUSHs((SV*)self->nodes[i].value);
271 0 0 } else { XPUSHs(&PL_sv_undef); }
274 0 0 if (self->tombstones > self->capacity / 4 ||
275 0 0 (self->size > 0 && self->tombstones > self->size))
0 0 (self->size > 0 && self->tombstones > self->size))
287 7 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
7 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 7 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 7 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
293 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
294 0 0 if (!hashmap_ia_reserve(self, (size_t)count))
300 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
315 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
316 0 0 RETVAL = (UV)self->capacity;
323 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
331 2 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
2 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 2 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 2 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
334 1 1 if (!hashmap_ia_swap(self, key, (void*)new_val, &old)) { SvREFCNT_dec(new_val); XSRETURN_UNDEF; }
343 1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
345 0 1 if (!clone) croak("Failed to clone");
346 16 1 { size_t _i; for (_i = 0; _i < clone->capacity; _i++) {
347 1 15 if (IA_NODE_LIVE(clone->nodes[_i]) && clone->nodes[_i].value)
1 0 if (IA_NODE_LIVE(clone->nodes[_i]) && clone->nodes[_i].value)
1 0 if (IA_NODE_LIVE(clone->nodes[_i]) && clone->nodes[_i].value)
350 1 0 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
1 0 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
0 1 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
0 0 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
1 0 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
0 1 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
357 1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
1 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 1 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
358 1 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV)
0 1 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV)
361 0 1 hashmap_ia_reserve(self, (size_t)HvUSEDKEYS(hv));
364 2 1 while ((he = hv_iternext(hv))) {
369 2 0 if (!hashmap_ia_put(self, key, (void*)val, 0)) SvREFCNT_dec(val);
375 0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
376 0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_ia)
0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_ia)
0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_ia)
380 0 0 uint32_t now = other->expires_at ? (uint32_t)time(NULL) : 0;
382 0 0 for (i = 0; i < other->capacity; i++) {
383 0 0 if (IA_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now)) {
0 0 if (IA_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now)) {
0 0 if (IA_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now)) {
0 0 if (IA_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now)) {
0 0 if (IA_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now)) {
385 0 0 if (!hashmap_ia_put(self, other->nodes[i].key, (void*)other->nodes[i].value, 0)) SvREFCNT_dec((SV*)other->nodes[i].value);
393 3 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
3 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 3 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 3 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
395 0 3 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
397 80 3 for (i = 0; i < self->capacity; i++) {
398 41 39 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
41 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 41 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (IA_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
399 41 0 SV* val = self->nodes[i].value ? SvREFCNT_inc((SV*)self->nodes[i].value) : &PL_sv_undef;
412 101 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
101 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 101 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 101 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
415 0 101 if (!RETVAL) SvREFCNT_dec(value);
422 4 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
4 0 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 4 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
0 4 EXTRACT_MAP(HashMapIA, stash_ia, "Data::HashMap::IA", self_sv);
426 0 4 if (idx >= self->capacity) {
430 1 3 if (was_found) SvREFCNT_dec(default_value);