Branch Coverage

xs/accessors.h
Criterion Covered Total %
branch 182 616 29.5


line true false branch
91 98 1 const struct mro_meta* stash_meta = HvMROMETA(stash);
29 1 const struct mro_meta* stash_meta = HvMROMETA(stash);
94 69 30 if (GvLINE(glob) == curgen || GvGPFLAGS(glob)) return GvSV(glob);
49 20 if (GvLINE(glob) == curgen || GvGPFLAGS(glob)) return GvSV(glob);
29 1 if (GvLINE(glob) == curgen || GvGPFLAGS(glob)) return GvSV(glob);
4 25 if (GvLINE(glob) == curgen || GvGPFLAGS(glob)) return GvSV(glob);
95 0 20 if (overflow && UNLIKELY(curgen > ((U32)1 << 31) - 1)) {
122 48 5 while (result == NULL && --fill >= 0) {
33 15 while (result == NULL && --fill >= 0) {
33 20 while (result == NULL && --fill >= 0) {
131 30 3 if (LIKELY(next_stash != NULL)) {
139 15 5 if (UNLIKELY(result == NULL)) {
147 1 14 result = GvSVn(stack[0]); /* undef from root */
154 20 0 const struct mro_meta* stash_meta = HvMROMETA(GvSTASH(cur_gv));
170 27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
0 27 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
27 0 SV** svp = hv_fetchhek(PL_isarev, HvENAME_HEK(stash));
171 3 24 if (svp) {
174 0 3 if (HvUSEDKEYS(isarev)) {
3 0 if (HvUSEDKEYS(isarev)) {
179 24 3 for (STRLEN bucket_num = 0; bucket_num <= hvmax; ++bucket_num) {
180 4 24 for (const HE* he = hvarr[bucket_num]; he; he = HeNEXT(he)) {
183 4 0 if (HeVAL(he) == pl_yes) { /* mro_core.c stores only them */
189 4 0 if (base_sv == NULL) {
191 4 0 if (!GvGPFLAGS(revglob)) GvLINE(revglob) = 0;
195 0 0 if (GvSV(revglob) == base_sv) {
213 1 12 if (UNLIKELY(!items)) croak("Usage: $obj->constructor or __PACKAGE__->constructor");
217 12 0 if (!stash) stash = CAIXS_find_stash(aTHX_ *MARK, cv);
221 6 6 if (items == 2 && SvROK(*MARK) && SvTYPE(SvRV(*MARK)) == SVt_PVHV) {
4 2 if (items == 2 && SvROK(*MARK) && SvTYPE(SvRV(*MARK)) == SVt_PVHV) {
3 1 if (items == 2 && SvROK(*MARK) && SvTYPE(SvRV(*MARK)) == SVt_PVHV) {
224 3 6 } else if (items == 2 && !SvOK(*MARK)) {
1 2 } else if (items == 2 && !SvOK(*MARK)) {
1 0 } else if (items == 2 && !SvOK(*MARK)) {
1 0 } else if (items == 2 && !SvOK(*MARK)) {
227 3 5 } else if ((items & 1) == 0) {
233 5 5 while (MARK < SP) {
252 0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 5 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 1 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 4 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
259 0 2 PUSHMARK(SP - items); /* our dAXMARK has popped one */
0 0 PUSHMARK(SP - items); /* our dAXMARK has popped one */
265 0 0 PUSHMARK(--SP); /* SP -= items */
0 3 PUSHMARK(--SP); /* SP -= items */
0 1 PUSHMARK(--SP); /* SP -= items */
0 3 PUSHMARK(--SP); /* SP -= items */
274 0 0 FREETMPS; /* that's done to immediately free stored value if it's only hard reference had been held on the stack */
1 0 FREETMPS; /* that's done to immediately free stored value if it's only hard reference had been held on the stack */
281 0 0 if (payload->lazy_cb) {
4 1 if (payload->lazy_cb) {
296 0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
1 54 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 5 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 27 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
303 0 0 if (items == 1) {
37 17 if (items == 1) {
3 2 if (items == 1) {
19 8 if (items == 1) {
321 0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 0 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 9 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 7 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 6 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 24 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 55 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
1 212 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 2 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
0 6 if (UNLIKELY(!items)) croak("Usage: $obj->accessor or __PACKAGE__->accessor");
329 0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 8 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 7 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 6 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 24 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 21 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
4 118 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 0 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
0 6 if (UNLIKELY(SvTYPE((SV*)obj) != SVt_PVHV)) {
333 0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
2 6 if (items > 1) {
3 4 if (items > 1) {
2 4 if (items > 1) {
8 16 if (items > 1) {
10 11 if (items > 1) {
24 94 if (items > 1) {
0 0 if (items > 1) {
2 4 if (items > 1) {
337 0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
0 0 CALL_WRITE_CB(new_value, 1);
8 0 CALL_WRITE_CB(new_value, 1);
0 8 CALL_WRITE_CB(new_value, 1);
8 0 CALL_WRITE_CB(new_value, 1);
0 8 CALL_WRITE_CB(new_value, 1);
9 1 CALL_WRITE_CB(new_value, 1);
0 9 CALL_WRITE_CB(new_value, 1);
338 0 0 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 0 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 0 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 0 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 0 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 0 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 2 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 3 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 8 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 9 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 24 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
0 0 if (UNLIKELY(!hv_store_ent(obj, payload->hash_key, new_value, 0))) {
347 0 0 if (hent) {
4 0 if (hent) {
4 0 if (hent) {
0 0 if (hent) {
4 0 if (hent) {
348 0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
0 0 CALL_READ_CB(HeVAL(hent));
16 0 CALL_READ_CB(HeVAL(hent));
0 16 CALL_READ_CB(HeVAL(hent));
16 0 CALL_READ_CB(HeVAL(hent));
0 16 CALL_READ_CB(HeVAL(hent));
9 2 CALL_READ_CB(HeVAL(hent));
0 9 CALL_READ_CB(HeVAL(hent));
365 0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
24 10 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
96 10 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
2 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
0 0 if (!stash) stash = CAIXS_find_stash(aTHX_ self, cv);
367 0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
0 0 if (items > 1) {
13 21 if (items > 1) {
28 78 if (items > 1) {
1 1 if (items > 1) {
0 0 if (items > 1) {
389 0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
0 0 CALL_WRITE_CB(new_value, 0);
11 2 CALL_WRITE_CB(new_value, 0);
0 11 CALL_WRITE_CB(new_value, 0);
390 0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 9 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
2 26 SET_GVGP_FLAGS(glob, new_value);
2 0 SET_GVGP_FLAGS(glob, new_value);
0 2 SET_GVGP_FLAGS(glob, new_value);
0 1 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
0 0 SET_GVGP_FLAGS(glob, new_value);
400 0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
5 16 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
15 62 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 1 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
0 0 if (!result) result = CAIXS_icache_update(aTHX_ stash, glob, payload->pkg_key);
402 0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
0 0 CALL_READ_CB(result);
18 3 CALL_READ_CB(result);
0 18 CALL_READ_CB(result);