Branch Coverage

xs/ii.xsi
Criterion Covered Total %
branch 387 622 62.2


line true false branch
7 61 57 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
32 86 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
4 114 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
9 0 118 if (!map) croak("Failed to create HashMap::II");
17 127 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
127 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 127 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 127 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
24 384733 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
384733 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 384733 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 384733 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
32 100192 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
100192 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 100192 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 100192 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
34 30 100162 if (!hashmap_ii_get(self, key, &value)) XSRETURN_UNDEF;
42 280022 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
280022 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 280022 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 280022 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
50 3 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
3 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 3 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 3 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
52 2 1 if (!hashmap_ii_take(self, key, &value)) XSRETURN_UNDEF;
60 10 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
10 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 10 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 10 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
68 15014 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
15014 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 15014 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 15014 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
70 3 15011 if (!hashmap_ii_increment(self, key, &val))
79 5006 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
5006 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5006 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5006 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
81 2 5004 if (!hashmap_ii_decrement(self, key, &val))
90 8 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
8 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 8 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 8 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
92 2 6 if (!hashmap_ii_increment_by(self, key, delta, &val))
101 55 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
55 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 55 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 55 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
102 0 55 RETVAL = self->size;
109 7 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
7 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 7 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 7 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
110 0 7 RETVAL = self->max_size;
117 5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
118 0 5 RETVAL = (UV)self->default_ttl;
125 4 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
4 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 4 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 4 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
126 0 4 RETVAL = (UV)self->lru_skip;
133 9 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
9 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 9 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 9 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
134 3 6 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
135 0 9 EXTEND(SP, self->size);
137 640 9 for (i = 0; i < self->capacity; i++) {
138 233 407 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
225 8 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
6 219 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
6 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
2 4 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
139 0 221 mXPUSHi(self->nodes[i].key);
145 5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
146 1 4 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
147 0 5 EXTEND(SP, self->size);
149 560 5 for (i = 0; i < self->capacity; i++) {
150 207 353 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
205 2 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
2 203 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
2 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 2 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
151 0 203 mXPUSHi(self->nodes[i].value);
157 5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
158 1 4 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
159 0 5 EXTEND(SP, self->size * 2);
161 560 5 for (i = 0; i < self->capacity; i++) {
162 207 353 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
205 2 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
2 203 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
2 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 2 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
163 0 203 mXPUSHi(self->nodes[i].key);
164 0 203 mXPUSHi(self->nodes[i].value);
171 31 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
31 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 31 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 31 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
172 6 25 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
173 174 6 while (self->iter_pos < self->capacity) {
175 46 128 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
44 2 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
24 20 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
24 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
5 19 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
176 0 25 EXTEND(SP, 2);
177 0 25 mXPUSHi(self->nodes[i].key);
178 1 24 if (GIMME_V == G_SCALAR) XSRETURN(1);
179 0 24 mXPUSHi(self->nodes[i].value);
189 1 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
1 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 1 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 1 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
195 5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
196 1 4 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
198 0 5 EXTEND(SP, (count < self->size ? count : self->size) * 2);
199 56 3 while (self->iter_pos < self->capacity && n < count) {
54 2 while (self->iter_pos < self->capacity && n < count) {
201 19 35 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
19 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
6 13 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
6 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
1 5 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
202 0 14 mXPUSHi(self->nodes[i].key);
203 0 14 mXPUSHi(self->nodes[i].value);
204 3 11 if (HM_UNLIKELY(self->lru_prev)) hashmap_ii_lru_unlink(self, (uint32_t)i);
209 3 2 if (self->iter_pos >= self->capacity) self->iter_pos = 0;
210 4 1 if (self->tombstones > self->capacity / 4 ||
211 3 1 (self->size > 0 && self->tombstones > self->size))
0 3 (self->size > 0 && self->tombstones > self->size))
217 7 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
7 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 7 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 7 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
218 1 6 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
219 3 4 if (self->lru_prev) {
220 4 1 while (self->lru_tail != HM_LRU_NONE) {
222 3 1 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now > self->expires_at[idx]) {
3 0 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now > self->expires_at[idx]) {
2 1 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now > self->expires_at[idx]) {
225 0 2 EXTEND(SP, 2);
226 0 2 mXPUSHi(self->nodes[idx].key);
227 0 2 mXPUSHi(self->nodes[idx].value);
230 2 0 if (self->tombstones > self->capacity / 4 ||
231 1 1 (self->size > 0 && self->tombstones > self->size))
0 1 (self->size > 0 && self->tombstones > self->size))
237 30 1 while (self->iter_pos < self->capacity) {
239 3 27 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
3 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 3 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
240 0 3 EXTEND(SP, 2);
241 0 3 mXPUSHi(self->nodes[i].key);
242 0 3 mXPUSHi(self->nodes[i].value);
244 3 0 if (self->tombstones > self->capacity / 4 ||
245 2 1 (self->size > 0 && self->tombstones > self->size))
1 1 (self->size > 0 && self->tombstones > self->size))
257 7 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
7 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 7 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 7 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
258 1 6 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
259 3 4 if (self->lru_prev) {
260 2 1 while (self->lru_head != HM_LRU_NONE) {
262 1 1 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now > self->expires_at[idx]) {
1 0 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now > self->expires_at[idx]) {
0 1 if (HM_UNLIKELY(self->expires_at && self->expires_at[idx]) && now > self->expires_at[idx]) {
265 0 2 EXTEND(SP, 2);
266 0 2 mXPUSHi(self->nodes[idx].key);
267 0 2 mXPUSHi(self->nodes[idx].value);
270 2 0 if (self->tombstones > self->capacity / 4 ||
271 2 0 (self->size > 0 && self->tombstones > self->size))
0 2 (self->size > 0 && self->tombstones > self->size))
277 2 2 if (self->iter_pos == 0) self->iter_pos = self->capacity;
278 19 1 while (self->iter_pos > 0) {
280 3 16 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
3 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 3 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
281 0 3 EXTEND(SP, 2);
282 0 3 mXPUSHi(self->nodes[i].key);
283 0 3 mXPUSHi(self->nodes[i].value);
285 3 0 if (self->tombstones > self->capacity / 4 ||
286 2 1 (self->size > 0 && self->tombstones > self->size))
1 1 (self->size > 0 && self->tombstones > self->size))
298 8 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
8 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 8 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 8 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
304 1 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
1 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 1 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 1 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
305 0 1 if (!hashmap_ii_reserve(self, (size_t)count))
311 1 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
1 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 1 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 1 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
317 5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
318 2 3 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
333 432 5 for (i = 0; i < self->capacity; i++) {
334 164 268 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
164 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
13 151 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
12 1 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
2 10 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
339 3 151 if (self->expires_at && self->expires_at[i] && self->expires_at[i] >= now) {
2 1 if (self->expires_at && self->expires_at[i] && self->expires_at[i] >= now) {
2 0 if (self->expires_at && self->expires_at[i] && self->expires_at[i] >= now) {
341 0 2 if (!rem) rem = 1;
361 7 1 if (dlen < 22 || memcmp(p, "DHMP", 4) != 0) croak("Invalid freeze data");
0 7 if (dlen < 22 || memcmp(p, "DHMP", 4) != 0) croak("Invalid freeze data");
363 0 7 uint8_t ver = *p++; if (ver != 1) croak("Unsupported freeze version %d", ver);
364 1 6 uint8_t vid = *p++; if (vid != 1) croak("Variant mismatch: expected 1, got %d", vid);
370 0 6 if (!map) croak("Failed to create map for thaw");
371 6 0 if (cnt > 0) hashmap_ii_reserve(map, (size_t)cnt);
373 156 5 for (j = 0; j < cnt; j++) {
374 1 155 if (p + 20 > end) { hashmap_ii_destroy(map); croak("Truncated freeze data"); }
379 153 2 if (ttl == 0 && map->expires_at) hashmap_ii_persist(map, key);
1 152 if (ttl == 0 && map->expires_at) hashmap_ii_persist(map, key);
382 0 5 if (p > end) croak("Truncated freeze data");
391 2 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
2 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 2 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 2 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
392 0 2 RETVAL = (UV)self->capacity;
399 3 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
3 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 3 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 3 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
407 2 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
2 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 2 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 2 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
409 1 1 if (!hashmap_ii_swap(self, key, new_val, &old)) XSRETURN_UNDEF;
417 3 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
3 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 3 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 3 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
426 4 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
4 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 4 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 4 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
428 0 4 if (!clone) croak("Failed to clone");
429 4 0 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
4 0 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
0 4 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);
4 0 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
0 4 RETVAL = sv_setref_pv(newSV(0), HvNAME(SvSTASH(SvRV(self_sv))), (void*)clone);
436 2 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
2 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 2 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 2 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
437 2 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV)
0 2 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV)
440 0 2 hashmap_ii_reserve(self, (size_t)HvUSEDKEYS(hv));
443 53 2 while ((he = hv_iternext(hv))) {
453 4 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
4 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 4 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 4 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
454 4 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_ii)
4 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_ii)
0 4 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_ii)
458 0 4 uint32_t now = other->expires_at ? (uint32_t)time(NULL) : 0;
460 64 4 for (i = 0; i < other->capacity; i++) {
461 7 57 if (II_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
7 0 if (II_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 7 if (II_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (II_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (II_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
469 5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
5 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 5 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
471 2 3 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
473 192 5 for (i = 0; i < self->capacity; i++) {
474 56 136 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
56 0 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
4 52 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
3 1 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 3 if (II_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
488 108 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
108 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 108 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 108 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
496 15 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
15 0 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 15 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
0 15 EXTRACT_MAP(HashMapII, stash_ii, "Data::HashMap::II", self_sv);
500 0 15 if (idx >= self->capacity) XSRETURN_UNDEF;