Branch Coverage

xs/i16.xs
Criterion Covered Total %
branch 105 570 18.4


line true false branch
8 0 4 if (!map) croak("HashMap::Shared::I16: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("HashMap::Shared::I16: %s", errbuf[0] ? errbuf : "unknown error");
17 0 0 if (!map) croak("HashMap::Shared::I16: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("HashMap::Shared::I16: %s", errbuf[0] ? errbuf : "unknown error");
25 0 4 if (!SvROK(self_sv)) return;
27 0 4 if (!h) return;
34 12 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 12 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 12 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
35 12 0 RETVAL = shm_i16_put(h, key, value);
42 9 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 9 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 9 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
44 1 8 if (!shm_i16_get(h, key, &value)) XSRETURN_UNDEF;
52 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
53 1 0 RETVAL = shm_i16_remove(h, key);
60 2 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
61 1 1 RETVAL = shm_i16_exists(h, key);
68 2 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
71 0 2 if (!ok) croak("HashMap::Shared::I16: increment failed");
79 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
82 0 1 if (!ok) croak("HashMap::Shared::I16: decrement failed");
90 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
93 0 1 if (!ok) croak("HashMap::Shared::I16: incr_by failed");
101 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
102 0 1 RETVAL = (UV)shm_i16_size(h);
109 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
110 0 0 RETVAL = (UV)shm_i16_max_entries(h);
117 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
118 0 1 uint32_t ns = h->shard_handles ? h->num_shards : 1;
119 1 1 for (uint32_t si = 0; si < ns; si++) {
120 0 1 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
123 0 1 uint32_t now = sh->expires_at ? shm_now() : 0;
125 0 1 EXTEND(SP, hdr->size);
126 16 1 for (uint32_t i = 0; i < hdr->table_cap; i++) {
127 5 11 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 5 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
128 0 5 mXPUSHi(nodes[i].key);
135 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
136 0 0 uint32_t ns = h->shard_handles ? h->num_shards : 1;
137 0 0 for (uint32_t si = 0; si < ns; si++) {
138 0 0 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
141 0 0 uint32_t now = sh->expires_at ? shm_now() : 0;
143 0 0 EXTEND(SP, hdr->size);
144 0 0 for (uint32_t i = 0; i < hdr->table_cap; i++) {
145 0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
146 0 0 mXPUSHi(nodes[i].value);
154 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
155 0 0 uint32_t ns = h->shard_handles ? h->num_shards : 1;
156 0 0 for (uint32_t si = 0; si < ns; si++) {
157 0 0 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
160 0 0 uint32_t now = sh->expires_at ? shm_now() : 0;
162 0 0 EXTEND(SP, hdr->size * 2);
163 0 0 for (uint32_t i = 0; i < hdr->table_cap; i++) {
164 0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
165 0 0 mXPUSHi(nodes[i].key);
166 0 0 mXPUSHi(nodes[i].value);
175 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
177 0 0 if (shm_i16_each(h, &out_key, &out_value)) {
178 0 0 EXTEND(SP, 2);
179 0 0 mXPUSHi(out_key);
180 0 0 mXPUSHi(out_value);
189 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
196 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
202 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
204 0 1 uint32_t ns = h->shard_handles ? h->num_shards : 1;
205 1 1 for (uint32_t si = 0; si < ns; si++) {
206 0 1 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
209 0 1 uint32_t now = sh->expires_at ? shm_now() : 0;
211 16 1 for (uint32_t i = 0; i < hdr->table_cap; i++) {
212 5 11 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 5 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
216 0 5 if (!hv_store(hv, kbuf, klen, val, 0)) SvREFCNT_dec(val);
228 2 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
231 0 2 if (!rc) XSRETURN_UNDEF;
239 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
240 0 0 REQUIRE_TTL(h);
0 0 REQUIRE_TTL(h);
241 0 0 RETVAL = shm_i16_put_ttl(h, key, value, (uint32_t)ttl_sec);
248 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
249 0 0 RETVAL = (UV)shm_i16_max_size(h);
256 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
257 0 0 RETVAL = (UV)shm_i16_ttl(h);
264 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
266 0 0 if (!shm_i16_take(h, key, &out_value)) XSRETURN_UNDEF;
274 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
277 0 0 if (!shm_i16_pop(h, &out_key, &out_val)) XSRETURN_EMPTY;
278 0 0 EXTEND(SP, 2);
285 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
288 0 0 if (!shm_i16_shift(h, &out_key, &out_val)) XSRETURN_EMPTY;
289 0 0 EXTEND(SP, 2);
296 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
297 0 0 if (limit == 0) XSRETURN_EMPTY;
299 0 0 Newxz(entries, limit, shm_i16_drain_entry);
305 0 0 EXTEND(SP, n * 2);
306 0 0 for (uint32_t i = 0; i < n; i++) {
310 0 0 if (buf) free(buf);
316 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
317 0 0 RETVAL = (UV)shm_i16_flush_expired(h);
324 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
327 0 0 EXTEND(SP, 2);
334 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
342 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
343 0 0 RETVAL = shm_i16_touch(h, key);
350 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
351 0 0 RETVAL = shm_i16_reserve(h, (uint32_t)target);
358 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
366 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
374 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
375 0 0 RETVAL = (UV)shm_i16_stat_recoveries(h);
382 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
390 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
398 2 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
399 1 1 RETVAL = shm_i16_add(h, key, value);
406 2 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
407 1 1 RETVAL = shm_i16_update(h, key, value);
414 2 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
417 1 1 if (rc != 1) XSRETURN_UNDEF;
425 2 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
426 1 1 RETVAL = shm_i16_cas(h, key, expected, desired);
433 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
434 1 0 RETVAL = shm_i16_persist(h, key);
441 1 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
442 1 0 RETVAL = shm_i16_set_ttl(h, key, (uint32_t)ttl_sec);
449 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
451 0 0 if (nkeys == 0) XSRETURN_EMPTY;
452 0 0 EXTEND(SP, nkeys);
0 0 EXTEND(SP, nkeys);
453 0 0 if (h->shard_handles) {
454 0 0 for (int i = 0; i < nkeys; i++) {
457 0 0 if (shm_i16_get(h, key, &val))
466 0 0 uint32_t now = h->expires_at ? shm_now() : 0;
473 0 0 for (int i = 0; i < nkeys; i++) {
479 0 0 for (int i = 0; i < nkeys; i++) {
486 0 0 for (uint32_t j = 0; j <= mask; j++) {
489 0 0 if (st == SHM_EMPTY) break;
490 0 0 if (st != tag) continue;
491 0 0 if (nodes[idx].key == key) {
492 0 0 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
0 0 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
0 0 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
498 0 0 if (found) mPUSHi(val);
501 0 0 if (i + 1 < nkeys) {
512 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
533 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
534 0 0 if ((items - 1) % 2 != 0) croak("set_multi requires even number of arguments (key, value pairs)");
536 0 0 if (h->shard_handles) {
537 0 0 for (int i = 1; i < items; i += 2)
543 0 0 for (int i = 1; i < items; i += 2)
548 0 0 RETVAL = count;
555 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
564 0 0 if (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) {
0 0 if (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) {
566 0 0 if (!h) croak("Attempted to use a destroyed Data::HashMap::Shared::I16 object");
569 0 0 if (items < 2) croak("Usage: Data::HashMap::Shared::I16->unlink($path)");
572 0 0 RETVAL = (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) ?
0 0 RETVAL = (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) ?
573 0 0 shm_unlink_sharded(INT2PTR(ShmHandle*, SvIV(SvRV(self_or_class)))) :
581 3 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
583 0 3 if (remaining < 0) XSRETURN_UNDEF;
591 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
592 0 0 RETVAL = (UV)shm_i16_capacity(h);
599 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
600 0 0 RETVAL = (UV)shm_i16_tombstones(h);
607 0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::I16", self_sv);
609 0 0 if (!c) croak("Failed to allocate cursor");
620 0 0 if (!SvROK(self_sv)) return;
622 0 0 if (!c) return;
625 0 0 if (h) shm_i16_flush_deferred(h);
631 0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
633 0 0 if (shm_i16_cursor_next(c, &out_key, &out_value)) {
634 0 0 EXTEND(SP, 2);
635 0 0 mXPUSHi(out_key);
636 0 0 mXPUSHi(out_value);
644 0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
650 0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::I16::Cursor", self_sv);
651 0 0 RETVAL = shm_i16_cursor_seek(c, key);