| line |
true |
false |
branch |
|
10
|
319 |
10 |
if (!SvOK(sv) || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVHV) { |
|
|
319 |
0 |
if (!SvOK(sv) || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVHV) { |
|
|
0 |
319 |
if (!SvOK(sv) || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVHV) { |
|
19
|
247 |
1 |
for (i = cxstack_ix; i >= 0; i--) { |
|
21
|
205 |
42 |
if (CxTYPE_is_LOOP(cx)) |
|
|
199 |
6 |
if (CxTYPE_is_LOOP(cx)) |
|
28
|
0 |
170 |
if ( !cx ) return 0; |
|
29
|
92 |
78 |
if ( CxTYPE_is_LOOP(cx) ) return 1; |
|
|
80 |
12 |
if ( CxTYPE_is_LOOP(cx) ) return 1; |
|
36
|
0 |
339 |
if ( !cx ) return 0; |
|
47
|
0 |
5 |
if ( !cx ) return; |
|
66
|
0 |
297 |
if ( !cx ) return; |
|
79
|
0 |
24 |
if ( !cx ) return 0; |
|
84
|
24 |
0 |
if ( !svp || !*svp ) return 0; |
|
|
0 |
24 |
if ( !svp || !*svp ) return 0; |
|
99
|
0 |
100 |
if ( !cx ) return; |
|
102
|
97 |
3 |
if ( is_finite ) { |
|
116
|
0 |
0 |
if ( !looputil_get_state_iv_for_cx(aTHX_ cx, 'F', &finite_iv) ) return 0; |
|
119
|
0 |
0 |
if ( *is_finite ) { |
|
120
|
0 |
0 |
if ( !looputil_get_state_iv_for_cx(aTHX_ cx, 'L', length) ) { |
|
136
|
1 |
84 |
if ( !cx ) return 0; |
|
141
|
28 |
56 |
if ( !flags ) return 0; |
|
143
|
26 |
30 |
if ( t == CXt_LOOP_ARY ) { |
|
148
|
18 |
12 |
if ( t == CXt_LOOP_LIST ) { |
|
153
|
12 |
0 |
if ( t == CXt_LOOP_LAZYIV ) { |
|
168
|
140 |
16 |
for ( ix = cxstack_ix; ix >= 0; ix-- ) { |
|
173
|
72 |
68 |
if ( !looputil_is_loop_context(cur) ) continue; |
|
174
|
34 |
34 |
if ( current_ix < 0 ) current_ix = ix; |
|
175
|
0 |
68 |
if ( !cur->blk_oldcop ) continue; |
|
178
|
18 |
50 |
if ( label && label_len == wanted_len && memEQ(label, wanted, wanted_len) ) { |
|
|
18 |
0 |
if ( label && label_len == wanted_len && memEQ(label, wanted, wanted_len) ) { |
|
|
18 |
0 |
if ( label && label_len == wanted_len && memEQ(label, wanted, wanted_len) ) { |
|
183
|
16 |
0 |
if ( current_ix >= 0 && wanted_len == 5 && memEQ(wanted, "OUTER", 5) ) { |
|
|
12 |
4 |
if ( current_ix >= 0 && wanted_len == 5 && memEQ(wanted, "OUTER", 5) ) { |
|
|
12 |
0 |
if ( current_ix >= 0 && wanted_len == 5 && memEQ(wanted, "OUTER", 5) ) { |
|
184
|
6 |
12 |
for ( ix = current_ix + 1; ix <= cxstack_ix; ix++ ) { |
|
188
|
6 |
0 |
if ( !looputil_is_loop_context(cur) ) continue; |
|
189
|
0 |
0 |
if ( looputil_iteration_index_for_cx(aTHX_ cur, &tmp) ) return cur; |
|
190
|
0 |
0 |
if ( looputil_get_iteration_for_cx(aTHX_ cur, &tmp) ) return cur; |
|
193
|
24 |
0 |
for ( ix = current_ix - 1; ix >= 0; ix-- ) { |
|
197
|
12 |
12 |
if ( !looputil_is_loop_context(cur) ) continue; |
|
198
|
0 |
12 |
if ( looputil_iteration_index_for_cx(aTHX_ cur, &tmp) ) return cur; |
|
199
|
12 |
0 |
if ( looputil_get_iteration_for_cx(aTHX_ cur, &tmp) ) return cur; |
|
207
|
12 |
12 |
if ( looputil_iteration_index_for_cx(aTHX_ cx, out) ) return 1; |
|
208
|
12 |
0 |
if ( looputil_get_iteration_for_cx(aTHX_ cx, out) ) return 1; |
|
216
|
37 |
0 |
if (!(PL_parser && PL_parser->bufptr)) return FALSE; |
|
|
0 |
37 |
if (!(PL_parser && PL_parser->bufptr)) return FALSE; |
|
219
|
37 |
0 |
if (!(PL_parser && PL_parser->bufptr)) return FALSE; |
|
|
0 |
37 |
if (!(PL_parser && PL_parser->bufptr)) return FALSE; |
|
224
|
7 |
30 |
if (!(strnEQ(s, w, n) && !isWORDCHAR(s[n]))) return FALSE; |
|
|
0 |
7 |
if (!(strnEQ(s, w, n) && !isWORDCHAR(s[n]))) return FALSE; |
|
235
|
37 |
0 |
if ( !( PL_parser && PL_parser->bufptr ) ) return NULL; |
|
|
0 |
37 |
if ( !( PL_parser && PL_parser->bufptr ) ) return NULL; |
|
238
|
28 |
9 |
if ( !isIDFIRST(*s) ) return NULL; |
|
241
|
44 |
9 |
while ( isWORDCHAR(*p) ) p++; |
|
245
|
9 |
0 |
if ( !( PL_parser && PL_parser->bufptr ) ) return NULL; |
|
|
0 |
9 |
if ( !( PL_parser && PL_parser->bufptr ) ) return NULL; |
|
246
|
0 |
9 |
if ( *PL_parser->bufptr != '{' ) return NULL; |
|
270
|
0 |
0 |
if (!elseop) return newCONDOP(0, cond, thenop, newOP(OP_NULL, 0)); |
|
282
|
1 |
12 |
if ( looputil_consume_word(aTHX_ "else") ) { |
|
286
|
3 |
10 |
if ( label ) { |
|
293
|
12 |
1 |
if ( !elseop ) { |
|
310
|
1 |
7 |
if ( looputil_consume_word(aTHX_ "else") ) { |
|
314
|
2 |
6 |
if ( label ) { |
|
321
|
7 |
1 |
if ( !elseop ) { |
|
338
|
2 |
7 |
if ( looputil_consume_word(aTHX_ "else") ) { |
|
342
|
2 |
7 |
if ( label ) { |
|
349
|
7 |
2 |
if ( !elseop ) { |
|
366
|
3 |
4 |
if ( looputil_consume_word(aTHX_ "else") ) { |
|
370
|
2 |
5 |
if ( label ) { |
|
377
|
4 |
3 |
if ( !elseop ) { |
|
399
|
20 |
0 |
if ( !( PL_parser && PL_parser->bufptr ) ) return 0; |
|
|
0 |
20 |
if ( !( PL_parser && PL_parser->bufptr ) ) return 0; |
|
402
|
0 |
20 |
if ( *s != '(' ) return 0; |
|
405
|
71 |
0 |
while ( *p ) { |
|
406
|
0 |
71 |
if ( *p == '\\' ) { |
|
407
|
0 |
0 |
if ( p[1] ) p += 2; |
|
412
|
71 |
0 |
if ( *p == '\'' || *p == '"' ) { |
|
|
0 |
71 |
if ( *p == '\'' || *p == '"' ) { |
|
414
|
0 |
0 |
while ( *p ) { |
|
415
|
0 |
0 |
if ( *p == '\\' && p[1] ) { |
|
|
0 |
0 |
if ( *p == '\\' && p[1] ) { |
|
419
|
0 |
0 |
if ( *p == q ) { |
|
428
|
21 |
50 |
if ( *p == '(' ) depth++; |
|
429
|
21 |
29 |
else if ( *p == ')' ) { |
|
431
|
20 |
1 |
if ( depth == 0 ) { |
|
451
|
4 |
0 |
if ( !( PL_parser && PL_parser->bufptr ) ) return 0; |
|
|
0 |
4 |
if ( !( PL_parser && PL_parser->bufptr ) ) return 0; |
|
455
|
0 |
3 |
if ( !expr ) return 0; |
|
459
|
3 |
0 |
if ( !( PL_parser && PL_parser->bufptr ) ) return 0; |
|
|
0 |
3 |
if ( !( PL_parser && PL_parser->bufptr ) ) return 0; |
|
462
|
1 |
2 |
if ( cursor < start ) { |
|
464
|
0 |
1 |
if ( len == 0 ) return 0; |
|
469
|
2 |
0 |
if ( *cursor == ';' ) { |
|
475
|
0 |
0 |
if ( *cursor == '\0' ) { |
|
492
|
23 |
0 |
if ( PL_parser && PL_parser->bufptr && *PL_parser->bufptr == '(' ) { |
|
|
23 |
0 |
if ( PL_parser && PL_parser->bufptr && *PL_parser->bufptr == '(' ) { |
|
|
20 |
3 |
if ( PL_parser && PL_parser->bufptr && *PL_parser->bufptr == '(' ) { |
|
493
|
0 |
20 |
if ( !looputil_parse_parenthesized_text(aTHX_ count_expr) ) { |
|
519
|
23 |
0 |
if ( PL_parser && PL_parser->bufptr && *PL_parser->bufptr != '{' ) { |
|
|
23 |
0 |
if ( PL_parser && PL_parser->bufptr && *PL_parser->bufptr != '{' ) { |
|
|
4 |
19 |
if ( PL_parser && PL_parser->bufptr && *PL_parser->bufptr != '{' ) { |
|
521
|
0 |
3 |
if ( !looputil_parse_statement_text(aTHX_ stmt_expr) ) { |
|
554
|
100 |
0 |
if ( cx && iter_sv && SvOK(iter_sv) ) { |
|
|
100 |
0 |
if ( cx && iter_sv && SvOK(iter_sv) ) { |
|
|
100 |
0 |
if ( cx && iter_sv && SvOK(iter_sv) ) { |
|
558
|
100 |
0 |
if ( cx && kind_sv && SvOK(kind_sv) ) { |
|
|
100 |
0 |
if ( cx && kind_sv && SvOK(kind_sv) ) { |
|
|
100 |
0 |
if ( cx && kind_sv && SvOK(kind_sv) ) { |
|
562
|
97 |
3 |
if ( strEQ(kind, "finite") ) { |
|
563
|
97 |
0 |
IV n = ( len_sv && SvOK(len_sv) ) ? SvIV(len_sv) : 0; |
|
|
97 |
0 |
IV n = ( len_sv && SvOK(len_sv) ) ? SvIV(len_sv) : 0; |
|
566
|
3 |
0 |
else if ( strEQ(kind, "infinite") ) { |
|
579
|
22 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
9 |
13 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
9 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
9 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
582
|
12 |
1 |
else if ( looputil_iteration_index_for_cx(aTHX_ cx, &i) ) RETVAL = ( i == 0 ); |
|
594
|
12 |
0 |
if ( looputil_resolve_iteration_for_cx(aTHX_ found, &i) ) RETVAL = ( i == 0 ); |
|
610
|
0 |
6 |
if ( t == CXt_LOOP_ARY ) { |
|
613
|
0 |
0 |
if ( ary ) { |
|
618
|
0 |
6 |
else if ( t == CXt_LOOP_LIST ) { |
|
624
|
0 |
0 |
if ( top >= base ) { |
|
629
|
6 |
0 |
else if ( t == CXt_LOOP_LAZYIV ) { |
|
634
|
0 |
0 |
else if ( t == CXt_LOOP_LAZYSV ) { |
|
637
|
0 |
0 |
RETVAL = ( cur && end && sv_cmp(cur, end) == 0 ); |
|
|
0 |
0 |
RETVAL = ( cur && end && sv_cmp(cur, end) == 0 ); |
|
|
0 |
0 |
RETVAL = ( cur && end && sv_cmp(cur, end) == 0 ); |
|
639
|
0 |
0 |
else if ( looputil_get_loopkind_for_cx(aTHX_ found, &is_finite, &length) ) { |
|
641
|
0 |
0 |
if ( !is_finite ) { |
|
644
|
0 |
0 |
if ( !looputil_get_iteration_for_cx(aTHX_ found, &i) ) { |
|
647
|
0 |
0 |
RETVAL = ( length > 0 && i >= ( length - 1 ) ); |
|
|
0 |
0 |
RETVAL = ( length > 0 && i >= ( length - 1 ) ); |
|
653
|
2 |
4 |
if ( RETVAL ) { |
|
666
|
6 |
0 |
if ( looputil_resolve_iteration_for_cx(aTHX_ found, &i) ) RETVAL = ( ( i % 2 ) == 0 ); |
|
678
|
6 |
0 |
if ( looputil_resolve_iteration_for_cx(aTHX_ found, &i) ) RETVAL = ( ( i % 2 ) != 0 ); |
|
691
|
14 |
0 |
if ( kind_sv && SvOK(kind_sv) ) { |
|
|
4 |
10 |
if ( kind_sv && SvOK(kind_sv) ) { |
|
695
|
1 |
3 |
if ( strEQ(kind, "infinite") ) { |
|
699
|
3 |
0 |
if ( strEQ(kind, "finite") ) { |
|
700
|
3 |
0 |
IV i = ( iter_sv && SvOK(iter_sv) ) ? SvIV(iter_sv) : 0; |
|
|
3 |
0 |
IV i = ( iter_sv && SvOK(iter_sv) ) ? SvIV(iter_sv) : 0; |
|
701
|
3 |
0 |
IV n = ( len_sv && SvOK(len_sv) ) ? SvIV(len_sv) : 0; |
|
|
3 |
0 |
IV n = ( len_sv && SvOK(len_sv) ) ? SvIV(len_sv) : 0; |
|
702
|
3 |
0 |
RETVAL = n > 0 && i >= ( n - 1 ); |
|
|
1 |
2 |
RETVAL = n > 0 && i >= ( n - 1 ); |
|
708
|
0 |
10 |
else if (!cx) { croak("iflast called outside for loop"); } |
|
722
|
9 |
1 |
if (t == CXt_LOOP_ARY) { |
|
725
|
9 |
0 |
if (ary) { |
|
727
|
3 |
6 |
if (ix >= lastix) RETVAL = 1; |
|
730
|
0 |
1 |
else if (t == CXt_LOOP_LIST) { |
|
737
|
0 |
0 |
if (top >= base) { |
|
739
|
0 |
0 |
if (ix >= (total - 1)) RETVAL = 1; |
|
742
|
0 |
1 |
else if (t == CXt_LOOP_LAZYIV) { |
|
745
|
0 |
0 |
if (cur == end) RETVAL = 1; |
|
747
|
0 |
1 |
else if (t == CXt_LOOP_LAZYSV) { |
|
750
|
0 |
0 |
if (cur && end && sv_cmp(cur, end) == 0) RETVAL = 1; |
|
|
0 |
0 |
if (cur && end && sv_cmp(cur, end) == 0) RETVAL = 1; |
|
|
0 |
0 |
if (cur && end && sv_cmp(cur, end) == 0) RETVAL = 1; |
|
753
|
3 |
7 |
if (RETVAL) { |
|
758
|
1 |
6 |
if ( t != CXt_LOOP_ARY && t != CXt_LOOP_LIST && |
|
|
1 |
0 |
if ( t != CXt_LOOP_ARY && t != CXt_LOOP_LIST && |
|
|
1 |
0 |
if ( t != CXt_LOOP_ARY && t != CXt_LOOP_LIST && |
|
759
|
1 |
0 |
t != CXt_LOOP_LAZYIV && t != CXt_LOOP_LAZYSV ) { |
|
775
|
12 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
3 |
9 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
3 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
3 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
778
|
8 |
1 |
else if ( looputil_iteration_index_for_cx(aTHX_ cx, &i) ) RETVAL = ( ( i % 2 ) == 0 ); |
|
791
|
14 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
3 |
11 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
3 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
|
3 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) ) { |
|
794
|
9 |
2 |
else if ( looputil_iteration_index_for_cx(aTHX_ cx, &i) ) RETVAL = ( ( i % 2 ) != 0 ); |
|
806
|
37 |
1 |
U8 t = cx ? CxTYPE(cx) : 0; |
|
808
|
38 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) && t == CXt_LOOP_PLAIN ) { |
|
|
38 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) && t == CXt_LOOP_PLAIN ) { |
|
|
38 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) && t == CXt_LOOP_PLAIN ) { |
|
|
38 |
0 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) && t == CXt_LOOP_PLAIN ) { |
|
|
22 |
16 |
if ( kind_sv && SvOK(kind_sv) && iter_sv && SvOK(iter_sv) && t == CXt_LOOP_PLAIN ) { |
|
811
|
15 |
1 |
else if ( looputil_iteration_index_for_cx(aTHX_ cx, &i) ) { |