Branch Coverage

xs/si32.xsi
Criterion Covered Total %
branch 187 678 27.5


line true false branch
7 2 16 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
0 18 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
0 18 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
9 0 18 if (!map) croak("Failed to create HashMap::SI32");
17 18 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
18 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 18 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 18 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
24 80224 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
80224 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 80224 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 80224 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
25 0 80224 EXTRACT_STR_KEY(key_sv);
33 50011 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
50011 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 50011 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 50011 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
34 0 50011 EXTRACT_STR_KEY(key_sv);
36 3 50008 if (!hashmap_si32_get(self, _kstr, (uint32_t)_klen, _khash, &value))
45 80005 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
80005 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 80005 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 80005 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
46 0 80005 EXTRACT_STR_KEY(key_sv);
54 1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
55 0 1 EXTRACT_STR_KEY(key_sv);
57 0 1 if (!hashmap_si32_take(self, _kstr, (uint32_t)_klen, _khash, &value)) XSRETURN_UNDEF;
65 2 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
2 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 2 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 2 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
66 0 2 EXTRACT_STR_KEY(key_sv);
74 13 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
13 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 13 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 13 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
75 0 13 EXTRACT_STR_KEY(key_sv);
77 1 12 if (!hashmap_si32_increment(self, _kstr, (uint32_t)_klen, _khash, _kutf8, &val))
86 3 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
3 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 3 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 3 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
87 0 3 EXTRACT_STR_KEY(key_sv);
89 1 2 if (!hashmap_si32_decrement(self, _kstr, (uint32_t)_klen, _khash, _kutf8, &val))
98 6 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
6 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 6 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 6 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
99 0 6 EXTRACT_STR_KEY(key_sv);
101 2 4 if (!hashmap_si32_increment_by(self, _kstr, (uint32_t)_klen, _khash, _kutf8, delta, &val))
110 6 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
6 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 6 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 6 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
111 0 6 RETVAL = self->size;
118 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
119 0 0 RETVAL = self->max_size;
126 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
127 0 0 RETVAL = (UV)self->default_ttl;
134 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
135 0 0 RETVAL = (UV)self->lru_skip;
142 3 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
3 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 3 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 3 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
143 0 3 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
144 0 3 EXTEND(SP, self->size);
146 48 3 for (i = 0; i < self->capacity; i++) {
147 8 40 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
7 1 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 7 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
150 1 6 if (HM_UNPACK_UTF8(self->nodes[i].key_len)) SvUTF8_on(sv);
151 0 7 mXPUSHs(sv);
158 1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
159 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
160 0 1 EXTEND(SP, self->size);
162 16 1 for (i = 0; i < self->capacity; i++) {
163 2 14 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
2 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 2 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
164 0 2 mXPUSHi(self->nodes[i].value);
170 2 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
2 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 2 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 2 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
171 0 2 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
172 0 2 EXTEND(SP, self->size * 2);
174 32 2 for (i = 0; i < self->capacity; i++) {
175 8 24 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
7 1 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 7 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
178 1 6 if (HM_UNPACK_UTF8(self->nodes[i].key_len)) SvUTF8_on(sv);
179 0 7 mXPUSHs(sv);
180 0 7 mXPUSHi(self->nodes[i].value);
187 3 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
3 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 3 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 3 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
188 0 3 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
189 16 1 while (self->iter_pos < self->capacity) {
191 2 14 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
2 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 2 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
192 0 2 EXTEND(SP, 2);
196 0 2 if (HM_UNPACK_UTF8(self->nodes[i].key_len)) SvUTF8_on(ksv);
197 0 2 mXPUSHs(ksv);
199 0 2 if (GIMME_V == G_SCALAR) XSRETURN(1);
200 0 2 mXPUSHi(self->nodes[i].value);
210 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
216 1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
217 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
219 0 1 EXTEND(SP, (count < self->size ? count : self->size) * 2);
220 2 0 while (self->iter_pos < self->capacity && n < count) {
1 1 while (self->iter_pos < self->capacity && n < count) {
222 1 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
1 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 1 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
225 0 1 if (HM_UNPACK_UTF8(self->nodes[i].key_len)) SvUTF8_on(ksv);
226 0 1 mXPUSHs(ksv);
228 0 1 mXPUSHi(self->nodes[i].value);
229 0 1 if (HM_UNLIKELY(self->lru_prev)) hashmap_si32_lru_unlink(self, (uint32_t)i);
234 0 1 if (self->iter_pos >= self->capacity) self->iter_pos = 0;
235 1 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
1 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
1 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
240 1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
241 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
242 1 0 if (self->lru_prev) {
243 1 0 while (self->lru_tail != HM_LRU_NONE) {
245 0 1 if (HM_UNLIKELY(HM_TTL_SKIP_EXPIRED(self, idx, now))) {
0 0 if (HM_UNLIKELY(HM_TTL_SKIP_EXPIRED(self, idx, now))) {
0 1 if (HM_UNLIKELY(HM_TTL_SKIP_EXPIRED(self, idx, now))) {
0 0 if (HM_UNLIKELY(HM_TTL_SKIP_EXPIRED(self, idx, now))) {
248 0 1 EXTEND(SP, 2);
251 1 0 if (HM_UNPACK_UTF8(self->nodes[idx].key_len)) SvUTF8_on(ksv);
252 0 1 mXPUSHs(ksv);
254 0 1 mXPUSHi(self->nodes[idx].value);
257 1 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
0 1 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
262 0 0 while (self->iter_pos < self->capacity) {
264 0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
265 0 0 EXTEND(SP, 2);
268 0 0 if (HM_UNPACK_UTF8(self->nodes[i].key_len)) SvUTF8_on(ksv);
269 0 0 mXPUSHs(ksv);
271 0 0 mXPUSHi(self->nodes[i].value);
273 0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
284 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
285 0 0 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
286 0 0 if (self->lru_prev) {
287 0 0 while (self->lru_head != HM_LRU_NONE) {
289 0 0 if (HM_UNLIKELY(HM_TTL_SKIP_EXPIRED(self, idx, now))) {
0 0 if (HM_UNLIKELY(HM_TTL_SKIP_EXPIRED(self, idx, now))) {
0 0 if (HM_UNLIKELY(HM_TTL_SKIP_EXPIRED(self, idx, now))) {
0 0 if (HM_UNLIKELY(HM_TTL_SKIP_EXPIRED(self, idx, now))) {
292 0 0 EXTEND(SP, 2);
295 0 0 if (HM_UNPACK_UTF8(self->nodes[idx].key_len)) SvUTF8_on(ksv);
296 0 0 mXPUSHs(ksv);
298 0 0 mXPUSHi(self->nodes[idx].value);
301 0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
306 0 0 if (self->iter_pos == 0) self->iter_pos = self->capacity;
307 0 0 while (self->iter_pos > 0) {
309 0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
310 0 0 EXTEND(SP, 2);
313 0 0 if (HM_UNPACK_UTF8(self->nodes[i].key_len)) SvUTF8_on(ksv);
314 0 0 mXPUSHs(ksv);
316 0 0 mXPUSHi(self->nodes[i].value);
318 0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_si32_compact);
329 2 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
2 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 2 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 2 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
335 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
336 0 0 if (!hashmap_si32_reserve(self, (size_t)count))
342 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
348 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
349 0 0 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
364 0 0 for (i = 0; i < self->capacity; i++) {
365 0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
374 0 0 if (self->expires_at && self->expires_at[i] && self->expires_at[i] >= now) {
0 0 if (self->expires_at && self->expires_at[i] && self->expires_at[i] >= now) {
0 0 if (self->expires_at && self->expires_at[i] && self->expires_at[i] >= now) {
376 0 0 if (!rem) rem = 1;
396 0 0 if (dlen < 22 || memcmp(p, "DHMP", 4) != 0) croak("Invalid freeze data");
0 0 if (dlen < 22 || memcmp(p, "DHMP", 4) != 0) croak("Invalid freeze data");
398 0 0 uint8_t ver = *p++; if (ver != 1) croak("Unsupported freeze version %d", ver);
399 0 0 uint8_t vid = *p++; if (vid != 6) croak("Variant mismatch: expected 6, got %d", vid);
405 0 0 if (!map) croak("Failed to create map for thaw");
406 0 0 if (cnt > 0) hashmap_si32_reserve(map, (size_t)cnt);
408 0 0 for (j = 0; j < cnt; j++) {
409 0 0 if (p + 13 > end) { hashmap_si32_destroy(map); croak("Truncated freeze data"); }
412 0 0 if (p + kl + 8 > end) { hashmap_si32_destroy(map); croak("Truncated freeze data"); }
417 0 0 if (!hashmap_si32_put(map, kstr, kl, khash, kutf8, val, ttl)) { hashmap_si32_destroy(map); croak("OOM during thaw"); }
418 0 0 if (ttl == 0 && map->expires_at) hashmap_si32_persist(map, kstr, kl, khash);
0 0 if (ttl == 0 && map->expires_at) hashmap_si32_persist(map, kstr, kl, khash);
421 0 0 if (p > end) croak("Truncated freeze data");
430 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
431 0 0 RETVAL = (UV)self->capacity;
438 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
439 0 0 EXTRACT_STR_KEY(key_sv);
447 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
448 0 0 EXTRACT_STR_KEY(key_sv);
450 0 0 if (!hashmap_si32_swap(self, _kstr, (uint32_t)_klen, _khash, new_val, &old)) XSRETURN_UNDEF;
458 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
459 0 0 EXTRACT_STR_KEY(key_sv);
468 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
470 0 0 if (!clone) croak("Failed to clone");
471 0 0 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);
0 0 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);
0 0 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);
478 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
479 0 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV)
0 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV)
482 0 0 hashmap_si32_reserve(self, (size_t)HvUSEDKEYS(hv));
485 0 0 while ((he = hv_iternext(hv))) {
486 0 0 STRLEN klen; const char* kstr = HePV(he, klen);
487 0 0 bool kutf8 = HeUTF8(he) ? true : false;
496 0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
497 0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_si32)
0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_si32)
0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_si32)
501 0 0 uint32_t now = other->expires_at ? (uint32_t)time(NULL) : 0;
503 0 0 for (i = 0; i < other->capacity; i++) {
504 0 0 if (SI32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (SI32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (SI32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (SI32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (SI32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
512 1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
514 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
516 16 1 for (i = 0; i < self->capacity; i++) {
517 1 15 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
1 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 1 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (SI32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
521 0 1 (void)hv_store(hv, self->nodes[i].key, kutf8 ? -(I32)klen : (I32)klen, val, 0);
531 1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
532 0 1 EXTRACT_STR_KEY(key_sv);
540 1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
1 0 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
0 1 EXTRACT_MAP(HashMapSI32, stash_si32, "Data::HashMap::SI32", self_sv);
541 0 1 EXTRACT_STR_KEY(key_sv);
544 0 1 if (idx >= self->capacity) XSRETURN_UNDEF;