| 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 |
if (self->tombstones > self->capacity / 4 || |
|
210
|
1 |
0 |
(self->size > 0 && self->tombstones > self->size)) |
|
|
1 |
0 |
(self->size > 0 && self->tombstones > self->size)) |
|
216
|
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); |
|
217
|
0 |
1 |
uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0; |
|
218
|
0 |
1 |
if (self->lru_prev) { |
|
219
|
0 |
0 |
while (self->lru_tail != HM_LRU_NONE) { |
|
221
|
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]) { |
|
224
|
0 |
0 |
EXTEND(SP, 2); |
|
225
|
0 |
0 |
mXPUSHi(self->nodes[idx].key); |
|
226
|
0 |
0 |
mXPUSHi(self->nodes[idx].value); |
|
229
|
0 |
0 |
if (self->tombstones > self->capacity / 4 || |
|
230
|
0 |
0 |
(self->size > 0 && self->tombstones > self->size)) |
|
|
0 |
0 |
(self->size > 0 && self->tombstones > self->size)) |
|
236
|
13 |
0 |
while (self->iter_pos < self->capacity) { |
|
238
|
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)) { |
|
239
|
0 |
1 |
EXTEND(SP, 2); |
|
240
|
0 |
1 |
mXPUSHi(self->nodes[i].key); |
|
241
|
0 |
1 |
mXPUSHi(self->nodes[i].value); |
|
243
|
1 |
0 |
if (self->tombstones > self->capacity / 4 || |
|
244
|
1 |
0 |
(self->size > 0 && self->tombstones > self->size)) |
|
|
0 |
1 |
(self->size > 0 && self->tombstones > self->size)) |
|
256
|
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); |
|
257
|
0 |
1 |
uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0; |
|
258
|
0 |
1 |
if (self->lru_prev) { |
|
259
|
0 |
0 |
while (self->lru_head != HM_LRU_NONE) { |
|
261
|
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]) { |
|
264
|
0 |
0 |
EXTEND(SP, 2); |
|
265
|
0 |
0 |
mXPUSHi(self->nodes[idx].key); |
|
266
|
0 |
0 |
mXPUSHi(self->nodes[idx].value); |
|
269
|
0 |
0 |
if (self->tombstones > self->capacity / 4 || |
|
270
|
0 |
0 |
(self->size > 0 && self->tombstones > self->size)) |
|
|
0 |
0 |
(self->size > 0 && self->tombstones > self->size)) |
|
276
|
1 |
0 |
if (self->iter_pos == 0) self->iter_pos = self->capacity; |
|
277
|
2 |
0 |
while (self->iter_pos > 0) { |
|
279
|
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)) { |
|
280
|
0 |
1 |
EXTEND(SP, 2); |
|
281
|
0 |
1 |
mXPUSHi(self->nodes[i].key); |
|
282
|
0 |
1 |
mXPUSHi(self->nodes[i].value); |
|
284
|
1 |
0 |
if (self->tombstones > self->capacity / 4 || |
|
285
|
1 |
0 |
(self->size > 0 && self->tombstones > self->size)) |
|
|
0 |
1 |
(self->size > 0 && self->tombstones > self->size)) |
|
297
|
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); |
|
303
|
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); |
|
304
|
0 |
0 |
if (!hashmap_i32_reserve(self, (size_t)count)) |
|
310
|
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); |
|
316
|
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); |
|
317
|
0 |
1 |
uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0; |
|
332
|
16 |
1 |
for (i = 0; i < self->capacity; i++) { |
|
333
|
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)) { |
|
338
|
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) |
|
358
|
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"); |
|
360
|
0 |
1 |
uint8_t ver = *p++; if (ver != 1) croak("Unsupported freeze version %d", ver); |
|
361
|
0 |
1 |
uint8_t vid = *p++; if (vid != 0) croak("Variant mismatch: expected 0, got %d", vid); |
|
367
|
0 |
1 |
if (!map) croak("Failed to create map for thaw"); |
|
368
|
1 |
0 |
if (cnt > 0) hashmap_i32_reserve(map, (size_t)cnt); |
|
370
|
10 |
1 |
for (j = 0; j < cnt; j++) { |
|
371
|
0 |
10 |
if (p + 12 > end) { hashmap_i32_destroy(map); croak("Truncated freeze data"); } |
|
378
|
0 |
1 |
if (p > end) croak("Truncated freeze data"); |
|
387
|
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); |
|
388
|
0 |
0 |
RETVAL = (UV)self->capacity; |
|
395
|
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); |
|
403
|
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); |
|
405
|
0 |
0 |
if (!hashmap_i32_swap(self, key, new_val, &old)) XSRETURN_UNDEF; |
|
413
|
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); |
|
422
|
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); |
|
424
|
0 |
0 |
if (!clone) croak("Failed to clone"); |
|
425
|
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); |
|
432
|
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); |
|
433
|
0 |
0 |
if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) |
|
|
0 |
0 |
if (!SvROK(href) || SvTYPE(SvRV(href)) != SVt_PVHV) |
|
436
|
0 |
0 |
hashmap_i32_reserve(self, (size_t)HvUSEDKEYS(hv)); |
|
439
|
0 |
0 |
while ((he = hv_iternext(hv))) { |
|
449
|
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); |
|
450
|
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) |
|
454
|
0 |
0 |
uint32_t now = other->expires_at ? (uint32_t)time(NULL) : 0; |
|
456
|
0 |
0 |
for (i = 0; i < other->capacity; i++) { |
|
457
|
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)) |
|
465
|
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); |
|
467
|
0 |
1 |
uint32_t now = self->expires_at ? (uint32_t)time(NULL) : 0; |
|
469
|
16 |
1 |
for (i = 0; i < self->capacity; i++) { |
|
470
|
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)) { |
|
484
|
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); |
|
492
|
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); |
|
496
|
1 |
2 |
if (idx >= self->capacity) XSRETURN_UNDEF; |