Branch Coverage

xs/i32.xsi
Criterion Covered Total %
branch 219 628 34.8


line true false branch
6 1 24 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
0 25 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
0 25 EXTRACT_NEW_ARGS(_max_size, _ttl, _lru_skip);
8 0 25 if (!map) croak("Failed to create HashMap::I32");
16 26 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
26 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 26 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 26 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
23 150244 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
150244 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 150244 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 150244 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
31 50010 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
50010 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 50010 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 50010 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
33 5 50005 if (!hashmap_i32_get(self, key, &value)) XSRETURN_UNDEF;
41 150004 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
150004 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 150004 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 150004 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
49 2 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
2 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 2 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 2 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
51 0 2 if (!hashmap_i32_take(self, key, &value)) XSRETURN_UNDEF;
59 3 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
3 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 3 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 3 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
67 9 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
9 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 9 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 9 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
69 2 7 if (!hashmap_i32_increment(self, key, &val))
78 9 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
9 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 9 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 9 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
80 3 6 if (!hashmap_i32_decrement(self, key, &val))
89 9 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
9 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 9 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 9 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
91 2 7 if (!hashmap_i32_increment_by(self, key, delta, &val))
100 7 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
7 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 7 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 7 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
101 0 7 RETVAL = self->size;
108 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
109 0 0 RETVAL = self->max_size;
116 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
117 0 0 RETVAL = (UV)self->default_ttl;
124 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
125 0 0 RETVAL = (UV)self->lru_skip;
132 2 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
2 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 2 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 2 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
133 0 2 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
134 0 2 EXTEND(SP, self->size);
136 32 2 for (i = 0; i < self->capacity; i++) {
137 2 30 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
2 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 2 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
138 0 2 mXPUSHi(self->nodes[i].key);
144 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
145 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
146 0 1 EXTEND(SP, self->size);
148 16 1 for (i = 0; i < self->capacity; i++) {
149 2 14 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
2 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 2 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now))
150 0 2 mXPUSHi(self->nodes[i].value);
156 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
157 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
158 0 1 EXTEND(SP, self->size * 2);
160 16 1 for (i = 0; i < self->capacity; i++) {
161 2 14 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
2 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 2 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
162 0 2 mXPUSHi(self->nodes[i].key);
163 0 2 mXPUSHi(self->nodes[i].value);
170 14 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
14 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 14 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 14 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
171 0 14 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
172 67 4 while (self->iter_pos < self->capacity) {
174 10 57 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
10 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 10 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
175 0 10 EXTEND(SP, 2);
176 0 10 mXPUSHi(self->nodes[i].key);
177 0 10 if (GIMME_V == G_SCALAR) XSRETURN(1);
178 0 10 mXPUSHi(self->nodes[i].value);
188 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
194 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
195 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
197 0 1 EXTEND(SP, (count < self->size ? count : self->size) * 2);
198 10 0 while (self->iter_pos < self->capacity && n < count) {
9 1 while (self->iter_pos < self->capacity && n < count) {
200 2 7 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
2 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 2 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
201 0 2 mXPUSHi(self->nodes[i].key);
202 0 2 mXPUSHi(self->nodes[i].value);
203 0 2 if (HM_UNLIKELY(self->lru_prev)) hashmap_i32_lru_unlink(self, (uint32_t)i);
208 0 1 if (self->iter_pos >= self->capacity) self->iter_pos = 0;
209 1 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
1 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
1 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
214 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
215 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
216 0 1 if (self->lru_prev) {
217 0 0 while (self->lru_tail != HM_LRU_NONE) {
219 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))) {
222 0 0 EXTEND(SP, 2);
223 0 0 mXPUSHi(self->nodes[idx].key);
224 0 0 mXPUSHi(self->nodes[idx].value);
227 0 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
232 13 0 while (self->iter_pos < self->capacity) {
234 1 12 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
1 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 1 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
235 0 1 EXTEND(SP, 2);
236 0 1 mXPUSHi(self->nodes[i].key);
237 0 1 mXPUSHi(self->nodes[i].value);
239 1 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
1 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
0 1 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
250 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
251 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
252 0 1 if (self->lru_prev) {
253 0 0 while (self->lru_head != HM_LRU_NONE) {
255 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))) {
258 0 0 EXTEND(SP, 2);
259 0 0 mXPUSHi(self->nodes[idx].key);
260 0 0 mXPUSHi(self->nodes[idx].value);
263 0 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
0 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
268 1 0 if (self->iter_pos == 0) self->iter_pos = self->capacity;
269 2 0 while (self->iter_pos > 0) {
271 1 1 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
1 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 1 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
272 0 1 EXTEND(SP, 2);
273 0 1 mXPUSHi(self->nodes[i].key);
274 0 1 mXPUSHi(self->nodes[i].value);
276 1 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
1 0 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
0 1 HM_MAYBE_COMPACT_XS(self, hashmap_i32_compact);
287 3 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
3 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 3 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 3 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
293 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
294 0 0 if (!hashmap_i32_reserve(self, (size_t)count))
300 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
306 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
307 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
322 16 1 for (i = 0; i < self->capacity; i++) {
323 10 6 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
10 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 10 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
328 0 10 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) {
330 0 0 if (!rem) rem = 1;
350 1 0 if (dlen < 22 || memcmp(p, "DHMP", 4) != 0) croak("Invalid freeze data");
0 1 if (dlen < 22 || memcmp(p, "DHMP", 4) != 0) croak("Invalid freeze data");
352 0 1 uint8_t ver = *p++; if (ver != 1) croak("Unsupported freeze version %d", ver);
353 0 1 uint8_t vid = *p++; if (vid != 0) croak("Variant mismatch: expected 0, got %d", vid);
359 0 1 if (!map) croak("Failed to create map for thaw");
360 1 0 if (cnt > 0) hashmap_i32_reserve(map, (size_t)cnt);
362 10 1 for (j = 0; j < cnt; j++) {
363 0 10 if (p + 12 > end) { hashmap_i32_destroy(map); croak("Truncated freeze data"); }
367 0 10 if (!hashmap_i32_put(map, key, val, ttl)) { hashmap_i32_destroy(map); croak("OOM during thaw"); }
368 10 0 if (ttl == 0 && map->expires_at) hashmap_i32_persist(map, key);
0 10 if (ttl == 0 && map->expires_at) hashmap_i32_persist(map, key);
371 0 1 if (p > end) croak("Truncated freeze data");
380 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
381 0 0 RETVAL = (UV)self->capacity;
388 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
396 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
398 0 0 if (!hashmap_i32_swap(self, key, new_val, &old)) XSRETURN_UNDEF;
406 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
415 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
417 0 0 if (!clone) croak("Failed to clone");
418 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);
425 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
426 0 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV)
0 0 if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV)
429 0 0 hashmap_i32_reserve(self, (size_t)HvUSEDKEYS(hv));
432 0 0 while ((he = hv_iternext(hv))) {
442 0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
443 0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_i32)
0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_i32)
0 0 if (!SvROK(other_sv) || !SvOBJECT(SvRV(other_sv)) || SvSTASH(SvRV(other_sv)) != stash_i32)
447 0 0 uint32_t now = other->expires_at ? (uint32_t)time(NULL) : 0;
449 0 0 for (i = 0; i < other->capacity; i++) {
450 0 0 if (I32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (I32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (I32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (I32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
0 0 if (I32_NODE_LIVE(other->nodes[i]) && !HM_TTL_SKIP_EXPIRED(other, i, now))
458 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
460 0 1 uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0;
462 16 1 for (i = 0; i < self->capacity; i++) {
463 1 15 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
1 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 1 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
0 0 if (I32_NODE_LIVE(self->nodes[i]) && !HM_TTL_SKIP_EXPIRED(self, i, now)) {
477 1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
1 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 1 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
485 3 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
3 0 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 3 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
0 3 EXTRACT_MAP(HashMapI32, stash_i32, "Data::HashMap::I32", self_sv);
488 1 2 if (idx >= self->capacity) XSRETURN_UNDEF;