Lines Matching refs:cc

231   pcre_uchar *cc;  member
501 #define PRIVATE_DATA(cc) (common->private_data_ptrs[(cc) - common->start]) argument
544 static pcre_uchar *bracketend(pcre_uchar *cc) in bracketend() argument
546 SLJIT_ASSERT((*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) || (*cc >= OP_ONCE && *cc <= OP_SCOND)); in bracketend()
547 do cc += GET(cc, 1); while (*cc == OP_ALT); in bracketend()
548 SLJIT_ASSERT(*cc >= OP_KET && *cc <= OP_KETRPOS); in bracketend()
549 cc += 1 + LINK_SIZE; in bracketend()
550 return cc; in bracketend()
553 static int no_alternatives(pcre_uchar *cc) in no_alternatives() argument
556 SLJIT_ASSERT((*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) || (*cc >= OP_ONCE && *cc <= OP_SCOND)); in no_alternatives()
559 cc += GET(cc, 1); in no_alternatives()
562 while (*cc == OP_ALT); in no_alternatives()
563 SLJIT_ASSERT(*cc >= OP_KET && *cc <= OP_KETRPOS); in no_alternatives()
584 static pcre_uchar *next_opcode(compiler_common *common, pcre_uchar *cc) in next_opcode() argument
587 switch(*cc) in next_opcode()
675 return cc + PRIV(OP_lengths)[*cc]; in next_opcode()
733 cc += PRIV(OP_lengths)[*cc]; in next_opcode()
735 if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); in next_opcode()
737 return cc; in next_opcode()
753 return cc + PRIV(OP_lengths)[*cc] - 1; in next_opcode()
759 return cc + 1; in next_opcode()
763 return cc + GET(cc, 1); in next_opcode()
770 return cc + 1 + 2 + cc[1]; in next_opcode()
779 static BOOL check_opcode_types(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend) in check_opcode_types() argument
785 while (cc < ccend) in check_opcode_types()
787 switch(*cc) in check_opcode_types()
792 cc += 1; in check_opcode_types()
797 common->optimized_cbracket[GET2(cc, 1)] = 0; in check_opcode_types()
798 cc += 1 + IMM2_SIZE; in check_opcode_types()
803 common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] = 0; in check_opcode_types()
804 cc += 1 + LINK_SIZE + IMM2_SIZE; in check_opcode_types()
811 if (cc[1 + LINK_SIZE] == OP_CALLOUT) in check_opcode_types()
813 cc += 1 + LINK_SIZE; in check_opcode_types()
817 common->optimized_cbracket[GET2(cc, 1)] = 0; in check_opcode_types()
818 cc += 1 + IMM2_SIZE; in check_opcode_types()
824 count = GET2(cc, 1 + IMM2_SIZE); in check_opcode_types()
825 slot = common->name_table + GET2(cc, 1) * common->name_entry_size; in check_opcode_types()
831 cc += 1 + 2 * IMM2_SIZE; in check_opcode_types()
841 cc += 1 + LINK_SIZE; in check_opcode_types()
850 cc += 2 + 2 * LINK_SIZE; in check_opcode_types()
868 cc += 1 + 2 + cc[1]; in check_opcode_types()
879 cc += 1; in check_opcode_types()
885 cc += 1 + 2 + cc[1]; in check_opcode_types()
889 cc = next_opcode(common, cc); in check_opcode_types()
890 if (cc == NULL) in check_opcode_types()
898 static int get_class_iterator_size(pcre_uchar *cc) in get_class_iterator_size() argument
900 switch(*cc) in get_class_iterator_size()
914 if (GET2(cc, 1) == GET2(cc, 1 + IMM2_SIZE)) in get_class_iterator_size()
1062 pcre_uchar *cc = common->start; in set_private_data_ptrs() local
1069 while (cc < ccend) in set_private_data_ptrs()
1077 …if (repeat_check && (*cc == OP_ONCE || *cc == OP_ONCE_NC || *cc == OP_BRA || *cc == OP_CBRA || *cc in set_private_data_ptrs()
1079 if (detect_repeat(common, cc)) in set_private_data_ptrs()
1083 if (cc >= end) in set_private_data_ptrs()
1084 end = bracketend(cc); in set_private_data_ptrs()
1089 switch(*cc) in set_private_data_ptrs()
1092 if (common->private_data_ptrs[cc + 1 - common->start] != 0) in set_private_data_ptrs()
1094 common->private_data_ptrs[cc - common->start] = private_data_ptr; in set_private_data_ptrs()
1096 cc += common->private_data_ptrs[cc + 1 - common->start]; in set_private_data_ptrs()
1098 cc += 1 + LINK_SIZE; in set_private_data_ptrs()
1111 common->private_data_ptrs[cc - common->start] = private_data_ptr; in set_private_data_ptrs()
1118 common->private_data_ptrs[cc - common->start] = private_data_ptr; in set_private_data_ptrs()
1125 alternative = cc + GET(cc, 1); in set_private_data_ptrs()
1128 common->private_data_ptrs[cc - common->start] = private_data_ptr; in set_private_data_ptrs()
1171 if (cc[1] != OP_ANYNL && cc[1] != OP_EXTUNI) in set_private_data_ptrs()
1177 if (cc[1 + IMM2_SIZE] != OP_ANYNL && cc[1 + IMM2_SIZE] != OP_EXTUNI) in set_private_data_ptrs()
1190 space = get_class_iterator_size(cc + size); in set_private_data_ptrs()
1195 size = GET(cc, 1); in set_private_data_ptrs()
1196 space = get_class_iterator_size(cc + size); in set_private_data_ptrs()
1201 cc = next_opcode(common, cc); in set_private_data_ptrs()
1202 SLJIT_ASSERT(cc != NULL); in set_private_data_ptrs()
1208 if (space > 0 && cc >= end) in set_private_data_ptrs()
1210 common->private_data_ptrs[cc - common->start] = private_data_ptr; in set_private_data_ptrs()
1218 cc += -size; in set_private_data_ptrs()
1220 if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); in set_private_data_ptrs()
1224 cc += size; in set_private_data_ptrs()
1229 if (cc >= end) in set_private_data_ptrs()
1231 end = bracketend(cc); in set_private_data_ptrs()
1235 cc += bracketlen; in set_private_data_ptrs()
1242 static int get_framesize(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, BOOL recursive… in get_framesize() argument
1261 ccend = bracketend(cc) - (1 + LINK_SIZE); in get_framesize()
1262 if (!recursive && (*cc == OP_CBRAPOS || *cc == OP_SCBRAPOS)) in get_framesize()
1268 cc = next_opcode(common, cc); in get_framesize()
1271 SLJIT_ASSERT(cc != NULL); in get_framesize()
1272 while (cc < ccend) in get_framesize()
1273 switch(*cc) in get_framesize()
1283 cc += 1; in get_framesize()
1298 cc += 1 + 2 + cc[1]; in get_framesize()
1318 cc += 1 + LINK_SIZE; in get_framesize()
1332 cc += 1 + LINK_SIZE + IMM2_SIZE; in get_framesize()
1339 cc ++; in get_framesize()
1410 cc = next_opcode(common, cc); in get_framesize()
1411 SLJIT_ASSERT(cc != NULL); in get_framesize()
1424 static void init_frame(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, int stackpos, in… in init_frame() argument
1440 ccend = bracketend(cc) - (1 + LINK_SIZE); in init_frame()
1441 if (recursive || (*cc != OP_CBRAPOS && *cc != OP_SCBRAPOS)) in init_frame()
1442 cc = next_opcode(common, cc); in init_frame()
1445 SLJIT_ASSERT(cc != NULL); in init_frame()
1446 while (cc < ccend) in init_frame()
1447 switch(*cc) in init_frame()
1460 cc += 1; in init_frame()
1476 cc += 1 + 2 + cc[1]; in init_frame()
1507 cc += 1 + LINK_SIZE; in init_frame()
1523 offset = (GET2(cc, 1 + LINK_SIZE)) << 1; in init_frame()
1533 cc += 1 + LINK_SIZE + IMM2_SIZE; in init_frame()
1537 cc = next_opcode(common, cc); in init_frame()
1538 SLJIT_ASSERT(cc != NULL); in init_frame()
1546 static SLJIT_INLINE int get_private_data_copy_length(compiler_common *common, pcre_uchar *cc, pcre_… in get_private_data_copy_length() argument
1552 while (cc < ccend) in get_private_data_copy_length()
1555 switch(*cc) in get_private_data_copy_length()
1558 if (PRIVATE_DATA(cc) != 0) in get_private_data_copy_length()
1561 SLJIT_ASSERT(PRIVATE_DATA(cc + 1) != 0); in get_private_data_copy_length()
1562 cc += PRIVATE_DATA(cc + 1); in get_private_data_copy_length()
1564 cc += 1 + LINK_SIZE; in get_private_data_copy_length()
1578 SLJIT_ASSERT(PRIVATE_DATA(cc) != 0); in get_private_data_copy_length()
1579 cc += 1 + LINK_SIZE; in get_private_data_copy_length()
1584 if (common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] == 0) in get_private_data_copy_length()
1586 cc += 1 + LINK_SIZE + IMM2_SIZE; in get_private_data_copy_length()
1592 cc += 1 + LINK_SIZE + IMM2_SIZE; in get_private_data_copy_length()
1597 alternative = cc + GET(cc, 1); in get_private_data_copy_length()
1600 cc += 1 + LINK_SIZE; in get_private_data_copy_length()
1604 if (PRIVATE_DATA(cc)) in get_private_data_copy_length()
1606 cc += 2; in get_private_data_copy_length()
1608 if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); in get_private_data_copy_length()
1613 if (PRIVATE_DATA(cc)) in get_private_data_copy_length()
1615 cc += 2; in get_private_data_copy_length()
1617 if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); in get_private_data_copy_length()
1622 if (PRIVATE_DATA(cc)) in get_private_data_copy_length()
1624 cc += 2 + IMM2_SIZE; in get_private_data_copy_length()
1626 if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); in get_private_data_copy_length()
1631 if (PRIVATE_DATA(cc)) in get_private_data_copy_length()
1633 cc += 1; in get_private_data_copy_length()
1637 if (PRIVATE_DATA(cc)) in get_private_data_copy_length()
1639 cc += 1; in get_private_data_copy_length()
1643 if (PRIVATE_DATA(cc)) in get_private_data_copy_length()
1645 cc += 1 + IMM2_SIZE; in get_private_data_copy_length()
1652 size = (*cc == OP_XCLASS) ? GET(cc, 1) : 1 + 32 / (int)sizeof(pcre_uchar); in get_private_data_copy_length()
1656 if (PRIVATE_DATA(cc)) in get_private_data_copy_length()
1657 private_data_length += get_class_iterator_size(cc + size); in get_private_data_copy_length()
1658 cc += size; in get_private_data_copy_length()
1662 cc = next_opcode(common, cc); in get_private_data_copy_length()
1663 SLJIT_ASSERT(cc != NULL); in get_private_data_copy_length()
1667 SLJIT_ASSERT(cc == ccend); in get_private_data_copy_length()
1671 static void copy_private_data(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, in copy_private_data() argument
1728 if (cc >= ccend) in copy_private_data()
1734 switch(*cc) in copy_private_data()
1737 if (PRIVATE_DATA(cc) != 0) in copy_private_data()
1740 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1741 SLJIT_ASSERT(PRIVATE_DATA(cc + 1) != 0); in copy_private_data()
1742 cc += PRIVATE_DATA(cc + 1); in copy_private_data()
1744 cc += 1 + LINK_SIZE; in copy_private_data()
1758 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1760 cc += 1 + LINK_SIZE; in copy_private_data()
1765 if (common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] == 0) in copy_private_data()
1768 srcw[0] = OVECTOR_PRIV(GET2(cc, 1 + LINK_SIZE)); in copy_private_data()
1770 cc += 1 + LINK_SIZE + IMM2_SIZE; in copy_private_data()
1776 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1777 srcw[1] = OVECTOR_PRIV(GET2(cc, 1 + LINK_SIZE)); in copy_private_data()
1779 cc += 1 + LINK_SIZE + IMM2_SIZE; in copy_private_data()
1784 alternative = cc + GET(cc, 1); in copy_private_data()
1788 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1791 cc += 1 + LINK_SIZE; in copy_private_data()
1795 if (PRIVATE_DATA(cc)) in copy_private_data()
1798 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1800 cc += 2; in copy_private_data()
1802 if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); in copy_private_data()
1807 if (PRIVATE_DATA(cc)) in copy_private_data()
1810 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1811 srcw[1] = PRIVATE_DATA(cc) + sizeof(sljit_sw); in copy_private_data()
1813 cc += 2; in copy_private_data()
1815 if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); in copy_private_data()
1820 if (PRIVATE_DATA(cc)) in copy_private_data()
1823 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1824 srcw[1] = PRIVATE_DATA(cc) + sizeof(sljit_sw); in copy_private_data()
1826 cc += 2 + IMM2_SIZE; in copy_private_data()
1828 if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]); in copy_private_data()
1833 if (PRIVATE_DATA(cc)) in copy_private_data()
1836 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1838 cc += 1; in copy_private_data()
1842 if (PRIVATE_DATA(cc)) in copy_private_data()
1845 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1848 cc += 1; in copy_private_data()
1852 if (PRIVATE_DATA(cc)) in copy_private_data()
1855 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1858 cc += 1 + IMM2_SIZE; in copy_private_data()
1865 size = (*cc == OP_XCLASS) ? GET(cc, 1) : 1 + 32 / (int)sizeof(pcre_uchar); in copy_private_data()
1869 if (PRIVATE_DATA(cc)) in copy_private_data()
1870 switch(get_class_iterator_size(cc + size)) in copy_private_data()
1874 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1879 srcw[0] = PRIVATE_DATA(cc); in copy_private_data()
1887 cc += size; in copy_private_data()
1891 cc = next_opcode(common, cc); in copy_private_data()
1892 SLJIT_ASSERT(cc != NULL); in copy_private_data()
1990 SLJIT_ASSERT(cc == ccend && stackptr == stacktop && (save || (tmp1empty && tmp2empty))); in copy_private_data()
1993 static SLJIT_INLINE pcre_uchar *set_then_offsets(compiler_common *common, pcre_uchar *cc, pcre_uint… in set_then_offsets() argument
1995 pcre_uchar *end = bracketend(cc); in set_then_offsets()
1996 BOOL has_alternatives = cc[GET(cc, 1)] == OP_ALT; in set_then_offsets()
1999 if (*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) in set_then_offsets()
2002 if (*cc == OP_COND || *cc == OP_SCOND) in set_then_offsets()
2005 cc = next_opcode(common, cc); in set_then_offsets()
2007 current_offset = common->then_offsets + (cc - common->start); in set_then_offsets()
2009 while (cc < end) in set_then_offsets()
2011 if ((*cc >= OP_ASSERT && *cc <= OP_ASSERTBACK_NOT) || (*cc >= OP_ONCE && *cc <= OP_SCOND)) in set_then_offsets()
2012 cc = set_then_offsets(common, cc, current_offset); in set_then_offsets()
2015 if (*cc == OP_ALT && has_alternatives) in set_then_offsets()
2016 current_offset = common->then_offsets + (cc + 1 + LINK_SIZE - common->start); in set_then_offsets()
2017 if (*cc >= OP_THEN && *cc <= OP_THEN_ARG && current_offset != NULL) in set_then_offsets()
2019 cc = next_opcode(common, cc); in set_then_offsets()
2368 static SLJIT_INLINE BOOL char_has_othercase(compiler_common *common, pcre_uchar *cc) in char_has_othercase() argument
2376 GETCHAR(c, cc); in char_has_othercase()
2391 c = *cc; in char_has_othercase()
2411 static unsigned int char_get_othercase_bit(compiler_common *common, pcre_uchar *cc) in char_get_othercase_bit() argument
2422 GETCHAR(c, cc); in char_get_othercase_bit()
2436 c = *cc; in char_get_othercase_bit()
2440 c = *cc; in char_get_othercase_bit()
2460 n = GET_EXTRALEN(*cc); in char_get_othercase_bit()
3236 static int scan_prefix(compiler_common *common, pcre_uchar *cc, pcre_uint32 *chars, pcre_uint8 *byt… in scan_prefix() argument
3262 switch (*cc) in scan_prefix()
3268 cc++; in scan_prefix()
3283 cc++; in scan_prefix()
3290 cc = bracketend(cc); in scan_prefix()
3300 cc++; in scan_prefix()
3306 repeat = GET2(cc, 1); in scan_prefix()
3308 cc += 1 + IMM2_SIZE; in scan_prefix()
3319 cc++; in scan_prefix()
3321 if (common->utf && HAS_EXTRALEN(*cc)) len += GET_EXTRALEN(*cc); in scan_prefix()
3323 max_chars = scan_prefix(common, cc + len, chars, bytes, max_chars, rec_count); in scan_prefix()
3330 cc += 1 + LINK_SIZE; in scan_prefix()
3334 cc += GET(cc, 1); in scan_prefix()
3343 alternative = cc + GET(cc, 1); in scan_prefix()
3352 if (*cc == OP_CBRA || *cc == OP_CBRAPOS) in scan_prefix()
3353 cc += IMM2_SIZE; in scan_prefix()
3354 cc += 1 + LINK_SIZE; in scan_prefix()
3359 if (common->utf && !is_char7_bitset((const pcre_uint8 *)(cc + 1), FALSE)) return consumed; in scan_prefix()
3362 cc += 1 + 32 / sizeof(pcre_uchar); in scan_prefix()
3370 cc += 1 + 32 / sizeof(pcre_uchar); in scan_prefix()
3379 cc += GET(cc, 1); in scan_prefix()
3389 cc++; in scan_prefix()
3398 cc++; in scan_prefix()
3407 cc++; in scan_prefix()
3412 cc++; in scan_prefix()
3423 cc++; in scan_prefix()
3433 cc += 1 + 2; in scan_prefix()
3438 repeat = GET2(cc, 1); in scan_prefix()
3439 cc += 1 + IMM2_SIZE; in scan_prefix()
3448 repeat = GET2(cc, 1); in scan_prefix()
3449 cc += 1 + IMM2_SIZE + 1; in scan_prefix()
3488 if (common->utf && HAS_EXTRALEN(*cc)) len += GET_EXTRALEN(*cc); in scan_prefix()
3491 if (caseless && char_has_othercase(common, cc)) in scan_prefix()
3496 GETCHAR(chr, cc); in scan_prefix()
3503 chr = *cc; in scan_prefix()
3511 cc_save = cc; in scan_prefix()
3517 chr = *cc; in scan_prefix()
3528 mask = *cc ^ *oc; in scan_prefix()
3555 cc++; in scan_prefix()
3564 cc = cc_save; in scan_prefix()
4605 static pcre_uchar *byte_sequence_compare(compiler_common *common, BOOL caseless, pcre_uchar *cc, in byte_sequence_compare() argument
4615 if (caseless && char_has_othercase(common, cc)) in byte_sequence_compare()
4617 othercasebit = char_get_othercase_bit(common, cc); in byte_sequence_compare()
4621 othercasechar = cc + (othercasebit >> 8); in byte_sequence_compare()
4628 othercasechar = cc + (othercasebit >> 9); in byte_sequence_compare()
4662 if (common->utf && HAS_EXTRALEN(*cc)) in byte_sequence_compare()
4663 utflength += GET_EXTRALEN(*cc); in byte_sequence_compare()
4673 if (othercasebit != 0 && othercasechar == cc) in byte_sequence_compare()
4675 context->c.asuchars[context->ucharptr] = *cc | othercasebit; in byte_sequence_compare()
4680 context->c.asuchars[context->ucharptr] = *cc; in byte_sequence_compare()
4738 if (othercasebit != 0 && othercasechar == cc) in byte_sequence_compare()
4741 …add_jump(compiler, backtracks, CMP(SLJIT_NOT_EQUAL, context->sourcereg, 0, SLJIT_IMM, *cc | otherc… in byte_sequence_compare()
4744 add_jump(compiler, backtracks, CMP(SLJIT_NOT_EQUAL, context->sourcereg, 0, SLJIT_IMM, *cc)); in byte_sequence_compare()
4748 cc++; in byte_sequence_compare()
4755 return cc; in byte_sequence_compare()
4780 static void compile_xclass_matchingpath(compiler_common *common, pcre_uchar *cc, jump_list **backtr… in compile_xclass_matchingpath() argument
4784 jump_list **list = (cc[0] & XCL_NOT) == 0 ? &found : backtracks; in compile_xclass_matchingpath()
4802 cc++; in compile_xclass_matchingpath()
4803 ccbegin = cc; in compile_xclass_matchingpath()
4805 if (cc[-1] & XCL_MAP) in compile_xclass_matchingpath()
4808 cc += 32 / sizeof(pcre_uchar); in compile_xclass_matchingpath()
4811 while (*cc != XCL_END) in compile_xclass_matchingpath()
4814 if (*cc == XCL_SINGLE) in compile_xclass_matchingpath()
4816 cc ++; in compile_xclass_matchingpath()
4817 GETCHARINCTEST(c, cc); in compile_xclass_matchingpath()
4824 else if (*cc == XCL_RANGE) in compile_xclass_matchingpath()
4826 cc ++; in compile_xclass_matchingpath()
4827 GETCHARINCTEST(c, cc); in compile_xclass_matchingpath()
4829 GETCHARINCTEST(c, cc); in compile_xclass_matchingpath()
4838 SLJIT_ASSERT(*cc == XCL_PROP || *cc == XCL_NOTPROP); in compile_xclass_matchingpath()
4839 cc++; in compile_xclass_matchingpath()
4840 if (*cc == PT_CLIST) in compile_xclass_matchingpath()
4842 other_cases = PRIV(ucd_caseless_sets) + cc[1]; in compile_xclass_matchingpath()
4856 switch(*cc) in compile_xclass_matchingpath()
4891 cc += 2; in compile_xclass_matchingpath()
4897 cc = ccbegin; in compile_xclass_matchingpath()
4899 read_char_range(common, min, max, (cc[-1] & XCL_NOT) != 0); in compile_xclass_matchingpath()
4901 if ((cc[-1] & XCL_HASPROP) == 0) in compile_xclass_matchingpath()
4903 if ((cc[-1] & XCL_MAP) != 0) in compile_xclass_matchingpath()
4906 …if (!check_class_ranges(common, (const pcre_uint8 *)cc, (((const pcre_uint8 *)cc)[31] & 0x80) != 0… in compile_xclass_matchingpath()
4910 OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc); in compile_xclass_matchingpath()
4919 cc += 32 / sizeof(pcre_uchar); in compile_xclass_matchingpath()
4924 …add_jump(compiler, (cc[-1] & XCL_NOT) == 0 ? backtracks : &found, CMP(SLJIT_GREATER, TMP2, 0, SLJI… in compile_xclass_matchingpath()
4927 else if ((cc[-1] & XCL_MAP) != 0) in compile_xclass_matchingpath()
4933 if (!check_class_ranges(common, (const pcre_uint8 *)cc, FALSE, TRUE, list)) in compile_xclass_matchingpath()
4943 OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc); in compile_xclass_matchingpath()
4955 cc += 32 / sizeof(pcre_uchar); in compile_xclass_matchingpath()
5005 while (*cc != XCL_END) in compile_xclass_matchingpath()
5011 if (*cc == XCL_SINGLE) in compile_xclass_matchingpath()
5013 cc ++; in compile_xclass_matchingpath()
5014 GETCHARINCTEST(c, cc); in compile_xclass_matchingpath()
5016 if (numberofcmps < 3 && (*cc == XCL_SINGLE || *cc == XCL_RANGE)) in compile_xclass_matchingpath()
5035 else if (*cc == XCL_RANGE) in compile_xclass_matchingpath()
5037 cc ++; in compile_xclass_matchingpath()
5038 GETCHARINCTEST(c, cc); in compile_xclass_matchingpath()
5040 GETCHARINCTEST(c, cc); in compile_xclass_matchingpath()
5042 if (numberofcmps < 3 && (*cc == XCL_SINGLE || *cc == XCL_RANGE)) in compile_xclass_matchingpath()
5064 if (*cc == XCL_NOTPROP) in compile_xclass_matchingpath()
5066 cc++; in compile_xclass_matchingpath()
5067 switch(*cc) in compile_xclass_matchingpath()
5072 if ((cc[-1] == XCL_NOTPROP && compares > 0) || (cc[-1] == XCL_PROP && compares == 0)) in compile_xclass_matchingpath()
5075 else if (cc[-1] == XCL_NOTPROP) in compile_xclass_matchingpath()
5091 c = PRIV(ucp_typerange)[(int)cc[1] * 2]; in compile_xclass_matchingpath()
5093 …jump = CMP(SLJIT_LESS_EQUAL ^ invertcmp, typereg, 0, SLJIT_IMM, PRIV(ucp_typerange)[(int)cc[1] * 2… in compile_xclass_matchingpath()
5097 jump = CMP(SLJIT_EQUAL ^ invertcmp, typereg, 0, SLJIT_IMM, (int)cc[1] - typeoffset); in compile_xclass_matchingpath()
5101 jump = CMP(SLJIT_EQUAL ^ invertcmp, scriptreg, 0, SLJIT_IMM, (int)cc[1]); in compile_xclass_matchingpath()
5130 …OP_FLAGS((*cc == PT_ALNUM) ? SLJIT_MOV : SLJIT_OR, TMP2, 0, (*cc == PT_ALNUM) ? SLJIT_UNUSED : TMP… in compile_xclass_matchingpath()
5138 other_cases = PRIV(ucd_caseless_sets) + cc[1]; in compile_xclass_matchingpath()
5268 cc += 2; in compile_xclass_matchingpath()
5285 …e_char1_matchingpath(compiler_common *common, pcre_uchar type, pcre_uchar *cc, jump_list **backtra… in compile_char1_matchingpath() argument
5306 return cc; in compile_char1_matchingpath()
5312 return cc; in compile_char1_matchingpath()
5318 return cc; in compile_char1_matchingpath()
5333 return cc; in compile_char1_matchingpath()
5346 return cc; in compile_char1_matchingpath()
5359 return cc; in compile_char1_matchingpath()
5380 return cc; in compile_char1_matchingpath()
5404 return cc; in compile_char1_matchingpath()
5408 return cc; in compile_char1_matchingpath()
5413 return cc; in compile_char1_matchingpath()
5421 propdata[2] = cc[0]; in compile_char1_matchingpath()
5422 propdata[3] = cc[1]; in compile_char1_matchingpath()
5425 return cc + 2; in compile_char1_matchingpath()
5448 return cc; in compile_char1_matchingpath()
5456 return cc; in compile_char1_matchingpath()
5464 return cc; in compile_char1_matchingpath()
5502 return cc; in compile_char1_matchingpath()
5571 return cc; in compile_char1_matchingpath()
5576 return cc; in compile_char1_matchingpath()
5584 return cc; in compile_char1_matchingpath()
5612 return cc; in compile_char1_matchingpath()
5620 compile_char1_matchingpath(common, OP_EODN, cc, backtracks); in compile_char1_matchingpath()
5626 return cc; in compile_char1_matchingpath()
5663 return cc; in compile_char1_matchingpath()
5669 if (common->utf && HAS_EXTRALEN(*cc)) length += GET_EXTRALEN(*cc); in compile_char1_matchingpath()
5671 …PILE && (type == OP_CHAR || !char_has_othercase(common, cc) || char_get_othercase_bit(common, cc) … in compile_char1_matchingpath()
5681 return byte_sequence_compare(common, type == OP_CHARI, cc, &context, backtracks); in compile_char1_matchingpath()
5688 GETCHAR(c, cc); in compile_char1_matchingpath()
5692 c = *cc; in compile_char1_matchingpath()
5694 if (type == OP_CHAR || !char_has_othercase(common, cc)) in compile_char1_matchingpath()
5698 return cc + length; in compile_char1_matchingpath()
5707 return cc + length; in compile_char1_matchingpath()
5712 return cc + length; in compile_char1_matchingpath()
5722 c = *cc; in compile_char1_matchingpath()
5726 if (type == OP_NOT || !char_has_othercase(common, cc)) in compile_char1_matchingpath()
5740 return cc + 1; in compile_char1_matchingpath()
5745 GETCHARLEN(c, cc, length); in compile_char1_matchingpath()
5750 c = *cc; in compile_char1_matchingpath()
5752 if (type == OP_NOT || !char_has_othercase(common, cc)) in compile_char1_matchingpath()
5773 return cc + length; in compile_char1_matchingpath()
5780 bit = (common->utf && is_char7_bitset((const pcre_uint8 *)cc, type == OP_NCLASS)) ? 127 : 255; in compile_char1_matchingpath()
5786 if (check_class_ranges(common, (const pcre_uint8 *)cc, type == OP_NCLASS, FALSE, backtracks)) in compile_char1_matchingpath()
5787 return cc + 32 / sizeof(pcre_uchar); in compile_char1_matchingpath()
5811 OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc); in compile_char1_matchingpath()
5821 return cc + 32 / sizeof(pcre_uchar); in compile_char1_matchingpath()
5825 compile_xclass_matchingpath(common, cc + LINK_SIZE, backtracks); in compile_char1_matchingpath()
5826 return cc + GET(cc, 0) - 1; in compile_char1_matchingpath()
5830 length = GET(cc, 0); in compile_char1_matchingpath()
5832 return cc + LINK_SIZE; in compile_char1_matchingpath()
5853 return cc + LINK_SIZE; in compile_char1_matchingpath()
5856 return cc; in compile_char1_matchingpath()
5859 static SLJIT_INLINE pcre_uchar *compile_charn_matchingpath(compiler_common *common, pcre_uchar *cc,… in compile_charn_matchingpath() argument
5864 pcre_uchar *ccbegin = cc; in compile_charn_matchingpath()
5871 if (cc >= ccend) in compile_charn_matchingpath()
5874 if (*cc == OP_CHAR) in compile_charn_matchingpath()
5878 if (common->utf && HAS_EXTRALEN(cc[1])) in compile_charn_matchingpath()
5879 size += GET_EXTRALEN(cc[1]); in compile_charn_matchingpath()
5882 else if (*cc == OP_CHARI) in compile_charn_matchingpath()
5888 if (char_has_othercase(common, cc + 1) && char_get_othercase_bit(common, cc + 1) == 0) in compile_charn_matchingpath()
5890 else if (HAS_EXTRALEN(cc[1])) in compile_charn_matchingpath()
5891 size += GET_EXTRALEN(cc[1]); in compile_charn_matchingpath()
5895 if (char_has_othercase(common, cc + 1) && char_get_othercase_bit(common, cc + 1) == 0) in compile_charn_matchingpath()
5901 cc += 1 + size; in compile_charn_matchingpath()
5906 cc = ccbegin; in compile_charn_matchingpath()
5917 …do cc = byte_sequence_compare(common, *cc == OP_CHARI, cc + 1, &context, backtracks); while (conte… in compile_charn_matchingpath()
5918 return cc; in compile_charn_matchingpath()
5922 return compile_char1_matchingpath(common, *cc, cc + 1, backtracks); in compile_charn_matchingpath()
5937 backtrack->cc = (ccstart); \
5950 backtrack->cc = (ccstart); \
5957 static void compile_dnref_search(compiler_common *common, pcre_uchar *cc, jump_list **backtracks) in compile_dnref_search() argument
5961 int count = GET2(cc, 1 + IMM2_SIZE); in compile_dnref_search()
5962 pcre_uchar *slot = common->name_table + GET2(cc, 1) * common->name_entry_size; in compile_dnref_search()
5966 SLJIT_ASSERT(*cc == OP_DNREF || *cc == OP_DNREFI); in compile_dnref_search()
5987 static void compile_ref_matchingpath(compiler_common *common, pcre_uchar *cc, jump_list **backtrack… in compile_ref_matchingpath() argument
5990 BOOL ref = (*cc == OP_REF || *cc == OP_REFI); in compile_ref_matchingpath()
5998 offset = GET2(cc, 1) << 1; in compile_ref_matchingpath()
6008 if (common->utf && *cc == OP_REFI) in compile_ref_matchingpath()
6053 …add_jump(compiler, *cc == OP_REF ? &common->casefulcmp : &common->caselesscmp, JUMP(SLJIT_FAST_CAL… in compile_ref_matchingpath()
6065 …add_jump(compiler, *cc == OP_REF ? &common->casefulcmp : &common->caselesscmp, JUMP(SLJIT_FAST_CAL… in compile_ref_matchingpath()
6083 …ar *compile_ref_iterator_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *p… in compile_ref_iterator_matchingpath() argument
6086 BOOL ref = (*cc == OP_REF || *cc == OP_REFI); in compile_ref_iterator_matchingpath()
6093 pcre_uchar *ccbegin = cc; in compile_ref_iterator_matchingpath()
6097 PUSH_BACKTRACK(sizeof(iterator_backtrack), cc, NULL); in compile_ref_iterator_matchingpath()
6100 offset = GET2(cc, 1) << 1; in compile_ref_iterator_matchingpath()
6102 cc += IMM2_SIZE; in compile_ref_iterator_matchingpath()
6103 type = cc[1 + IMM2_SIZE]; in compile_ref_iterator_matchingpath()
6113 cc += 1 + IMM2_SIZE + 1; in compile_ref_iterator_matchingpath()
6119 cc += 1 + IMM2_SIZE + 1; in compile_ref_iterator_matchingpath()
6125 cc += 1 + IMM2_SIZE + 1; in compile_ref_iterator_matchingpath()
6129 min = GET2(cc, 1 + IMM2_SIZE + 1); in compile_ref_iterator_matchingpath()
6130 max = GET2(cc, 1 + IMM2_SIZE + 1 + IMM2_SIZE); in compile_ref_iterator_matchingpath()
6131 cc += 1 + IMM2_SIZE + 1 + 2 * IMM2_SIZE; in compile_ref_iterator_matchingpath()
6220 return cc; in compile_ref_iterator_matchingpath()
6287 return cc; in compile_ref_iterator_matchingpath()
6290 …e_uchar *compile_recurse_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *p… in compile_recurse_matchingpath() argument
6296 sljit_sw start = GET(cc, 1); in compile_recurse_matchingpath()
6300 PUSH_BACKTRACK(sizeof(recurse_backtrack), cc, NULL); in compile_recurse_matchingpath()
6308 return cc + 1 + LINK_SIZE; in compile_recurse_matchingpath()
6356 return cc + 1 + LINK_SIZE; in compile_recurse_matchingpath()
6410 …e_uchar *compile_callout_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *p… in compile_callout_matchingpath() argument
6415 PUSH_BACKTRACK(sizeof(backtrack_common), cc, NULL); in compile_callout_matchingpath()
6422 OP1(SLJIT_MOV_SI, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(callout_number), SLJIT_IMM, cc[1]); in compile_callout_matchingpath()
6432 OP1(SLJIT_MOV_SI, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(pattern_position), SLJIT_IMM, GET(cc, 2… in compile_callout_matchingpath()
6433 OP1(SLJIT_MOV_SI, SLJIT_MEM1(STACK_TOP), CALLOUT_ARG_OFFSET(next_item_length), SLJIT_IMM, GET(cc, 2… in compile_callout_matchingpath()
6452 return cc + 2 + 2 * LINK_SIZE; in compile_callout_matchingpath()
6458 static pcre_uchar *compile_assert_matchingpath(compiler_common *common, pcre_uchar *cc, assert_back… in compile_assert_matchingpath() argument
6487 if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) in compile_assert_matchingpath()
6490 bra = *cc; in compile_assert_matchingpath()
6491 cc++; in compile_assert_matchingpath()
6493 private_data_ptr = PRIVATE_DATA(cc); in compile_assert_matchingpath()
6495 framesize = get_framesize(common, cc, NULL, FALSE, &needs_control_head); in compile_assert_matchingpath()
6498 opcode = *cc; in compile_assert_matchingpath()
6501 ccbegin = cc; in compile_assert_matchingpath()
6502 cc += GET(cc, 1); in compile_assert_matchingpath()
6571 altbacktrack.cc = ccbegin; in compile_assert_matchingpath()
6572 compile_matchingpath(common, ccbegin + 1 + LINK_SIZE, cc, &altbacktrack); in compile_assert_matchingpath()
6664 if (*cc != OP_ALT) in compile_assert_matchingpath()
6667 ccbegin = cc; in compile_assert_matchingpath()
6668 cc += GET(cc, 1); in compile_assert_matchingpath()
6853 return cc + 1 + LINK_SIZE; in compile_assert_matchingpath()
6981 static pcre_uchar *compile_bracket_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_… in compile_bracket_matchingpath() argument
7004 PUSH_BACKTRACK(sizeof(bracket_backtrack), cc, NULL); in compile_bracket_matchingpath()
7006 if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) in compile_bracket_matchingpath()
7008 bra = *cc; in compile_bracket_matchingpath()
7009 cc++; in compile_bracket_matchingpath()
7010 opcode = *cc; in compile_bracket_matchingpath()
7013 opcode = *cc; in compile_bracket_matchingpath()
7014 ccbegin = cc; in compile_bracket_matchingpath()
7015 matchingpath = bracketend(cc) - 1 - LINK_SIZE; in compile_bracket_matchingpath()
7030 if ((opcode == OP_COND || opcode == OP_SCOND) && cc[1 + LINK_SIZE] == OP_DEF) in compile_bracket_matchingpath()
7040 cc += GET(cc, 1); in compile_bracket_matchingpath()
7042 has_alternatives = *cc == OP_ALT; in compile_bracket_matchingpath()
7046 if (SLJIT_UNLIKELY(opcode == OP_COND) && (*cc == OP_KETRMAX || *cc == OP_KETRMIN)) in compile_bracket_matchingpath()
7350 if (*cc == OP_ALT) in compile_bracket_matchingpath()
7352 matchingpath = cc + 1 + LINK_SIZE; in compile_bracket_matchingpath()
7353 cc += GET(cc, 1); in compile_bracket_matchingpath()
7356 matchingpath = cc; in compile_bracket_matchingpath()
7367 assert->common.cc = matchingpath; in compile_bracket_matchingpath()
7373 compile_matchingpath(common, matchingpath, cc, backtrack); in compile_bracket_matchingpath()
7512 while (*cc == OP_ALT) in compile_bracket_matchingpath()
7513 cc += GET(cc, 1); in compile_bracket_matchingpath()
7514 cc += 1 + LINK_SIZE; in compile_bracket_matchingpath()
7519 return cc + repeat_length; in compile_bracket_matchingpath()
7522 static pcre_uchar *compile_bracketpos_matchingpath(compiler_common *common, pcre_uchar *cc, backtra… in compile_bracketpos_matchingpath() argument
7539 PUSH_BACKTRACK(sizeof(bracketpos_backtrack), cc, NULL); in compile_bracketpos_matchingpath()
7540 if (*cc == OP_BRAPOSZERO) in compile_bracketpos_matchingpath()
7543 cc++; in compile_bracketpos_matchingpath()
7546 opcode = *cc; in compile_bracketpos_matchingpath()
7547 private_data_ptr = PRIVATE_DATA(cc); in compile_bracketpos_matchingpath()
7554 ccbegin = cc + 1 + LINK_SIZE; in compile_bracketpos_matchingpath()
7559 offset = GET2(cc, 1 + LINK_SIZE); in compile_bracketpos_matchingpath()
7565 ccbegin = cc + 1 + LINK_SIZE + IMM2_SIZE; in compile_bracketpos_matchingpath()
7573 framesize = get_framesize(common, cc, NULL, FALSE, &needs_control_head); in compile_bracketpos_matchingpath()
7666 init_frame(common, cc, NULL, stacksize - 1, stacksize - framesize, FALSE); in compile_bracketpos_matchingpath()
7674 while (*cc != OP_KETRPOS) in compile_bracketpos_matchingpath()
7678 cc += GET(cc, 1); in compile_bracketpos_matchingpath()
7680 compile_matchingpath(common, ccbegin, cc, backtrack); in compile_bracketpos_matchingpath()
7772 if (*cc == OP_KETRPOS) in compile_bracketpos_matchingpath()
7783 if (*cc == OP_KETRPOS) in compile_bracketpos_matchingpath()
7785 ccbegin = cc + 1 + LINK_SIZE; in compile_bracketpos_matchingpath()
7802 return cc + 1 + LINK_SIZE; in compile_bracketpos_matchingpath()
7805 static SLJIT_INLINE pcre_uchar *get_iterator_parameters(compiler_common *common, pcre_uchar *cc, pc… in get_iterator_parameters() argument
7809 *opcode = *cc; in get_iterator_parameters()
7812 cc++; in get_iterator_parameters()
7817 cc++; in get_iterator_parameters()
7823 cc++; in get_iterator_parameters()
7829 cc++; in get_iterator_parameters()
7835 cc++; in get_iterator_parameters()
7843 cc++; in get_iterator_parameters()
7844 class_len = (*type < OP_XCLASS) ? (int)(1 + (32 / sizeof(pcre_uchar))) : GET(cc, 0); in get_iterator_parameters()
7845 *opcode = cc[class_len - 1]; in get_iterator_parameters()
7850 *end = cc + class_len; in get_iterator_parameters()
7856 *end = cc + class_len; in get_iterator_parameters()
7861 *max = GET2(cc, (class_len + IMM2_SIZE)); in get_iterator_parameters()
7862 *min = GET2(cc, class_len); in get_iterator_parameters()
7873 *end = cc + class_len + 2 * IMM2_SIZE; in get_iterator_parameters()
7875 return cc; in get_iterator_parameters()
7880 *max = GET2(cc, 0); in get_iterator_parameters()
7881 cc += IMM2_SIZE; in get_iterator_parameters()
7886 *type = *cc; in get_iterator_parameters()
7888 *end = next_opcode(common, cc); in get_iterator_parameters()
7889 cc++; in get_iterator_parameters()
7890 return cc; in get_iterator_parameters()
7895 *end = cc + 1; in get_iterator_parameters()
7897 if (common->utf && HAS_EXTRALEN(*cc)) *end += GET_EXTRALEN(*cc); in get_iterator_parameters()
7900 return cc; in get_iterator_parameters()
7903 static pcre_uchar *compile_iterator_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack… in compile_iterator_matchingpath() argument
7914 int private_data_ptr = PRIVATE_DATA(cc); in compile_iterator_matchingpath()
7920 PUSH_BACKTRACK(sizeof(iterator_backtrack), cc, NULL); in compile_iterator_matchingpath()
7922 cc = get_iterator_parameters(common, cc, &opcode, &type, &max, &min, &end); in compile_iterator_matchingpath()
7988 compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); in compile_iterator_matchingpath()
8010 compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); in compile_iterator_matchingpath()
8019 compile_char1_matchingpath(common, type, cc, &nomatch); in compile_iterator_matchingpath()
8046 compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); in compile_iterator_matchingpath()
8070 compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); in compile_iterator_matchingpath()
8077 compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); in compile_iterator_matchingpath()
8086 compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); in compile_iterator_matchingpath()
8091 compile_char1_matchingpath(common, type, cc, &nomatch); in compile_iterator_matchingpath()
8106 compile_char1_matchingpath(common, type, cc, &nomatch); in compile_iterator_matchingpath()
8116 compile_char1_matchingpath(common, type, cc, &backtrack->topbacktracks); in compile_iterator_matchingpath()
8127 compile_char1_matchingpath(common, type, cc, &nomatch); in compile_iterator_matchingpath()
8149 …har *compile_fail_accept_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *p… in compile_fail_accept_matchingpath() argument
8154 PUSH_BACKTRACK(sizeof(backtrack_common), cc, NULL); in compile_fail_accept_matchingpath()
8156 if (*cc == OP_FAIL) in compile_fail_accept_matchingpath()
8159 return cc + 1; in compile_fail_accept_matchingpath()
8162 if (*cc == OP_ASSERT_ACCEPT || common->currententry != NULL || !common->might_be_empty) in compile_fail_accept_matchingpath()
8169 return cc + 1; in compile_fail_accept_matchingpath()
8190 return cc + 1; in compile_fail_accept_matchingpath()
8193 static SLJIT_INLINE pcre_uchar *compile_close_matchingpath(compiler_common *common, pcre_uchar *cc) in compile_close_matchingpath() argument
8196 int offset = GET2(cc, 1); in compile_close_matchingpath()
8201 return cc + 1 + IMM2_SIZE; in compile_close_matchingpath()
8209 return cc + 1 + IMM2_SIZE; in compile_close_matchingpath()
8212 …ar *compile_control_verb_matchingpath(compiler_common *common, pcre_uchar *cc, backtrack_common *p… in compile_control_verb_matchingpath() argument
8216 pcre_uchar opcode = *cc; in compile_control_verb_matchingpath()
8217 pcre_uchar *ccend = cc + 1; in compile_control_verb_matchingpath()
8220 ccend += 2 + cc[1]; in compile_control_verb_matchingpath()
8222 PUSH_BACKTRACK(sizeof(backtrack_common), cc, NULL); in compile_control_verb_matchingpath()
8234 OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, (sljit_sw)(cc + 2)); in compile_control_verb_matchingpath()
8244 static SLJIT_INLINE void compile_then_trap_matchingpath(compiler_common *common, pcre_uchar *cc, pc… in compile_then_trap_matchingpath() argument
8251 PUSH_BACKTRACK_NOVALUE(sizeof(then_trap_backtrack), cc); in compile_then_trap_matchingpath()
8253 BACKTRACK_AS(then_trap_backtrack)->common.cc = then_trap_opcode; in compile_then_trap_matchingpath()
8254 BACKTRACK_AS(then_trap_backtrack)->start = (sljit_sw)(cc - common->start); in compile_then_trap_matchingpath()
8255 BACKTRACK_AS(then_trap_backtrack)->framesize = get_framesize(common, cc, ccend, FALSE, &needs_contr… in compile_then_trap_matchingpath()
8272 init_frame(common, cc, ccend, size - 1, 0, FALSE); in compile_then_trap_matchingpath()
8275 static void compile_matchingpath(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, backtr… in compile_matchingpath() argument
8284 if (common->has_then && common->then_offsets[cc - common->start] != 0) in compile_matchingpath()
8290 compile_then_trap_matchingpath(common, cc, ccend, parent); in compile_matchingpath()
8293 while (cc < ccend) in compile_matchingpath()
8295 switch(*cc) in compile_matchingpath()
8327cc = compile_char1_matchingpath(common, *cc, cc + 1, parent->top != NULL ? &parent->top->nextbackt… in compile_matchingpath()
8331 PUSH_BACKTRACK_NOVALUE(sizeof(backtrack_common), cc); in compile_matchingpath()
8336 cc++; in compile_matchingpath()
8342cc = compile_charn_matchingpath(common, cc, ccend, parent->top != NULL ? &parent->top->nextbacktra… in compile_matchingpath()
8344cc = compile_char1_matchingpath(common, *cc, cc + 1, parent->top != NULL ? &parent->top->nextbackt… in compile_matchingpath()
8412 cc = compile_iterator_matchingpath(common, cc, parent); in compile_matchingpath()
8417 …if (cc[1 + (32 / sizeof(pcre_uchar))] >= OP_CRSTAR && cc[1 + (32 / sizeof(pcre_uchar))] <= OP_CRPO… in compile_matchingpath()
8418 cc = compile_iterator_matchingpath(common, cc, parent); in compile_matchingpath()
8420cc = compile_char1_matchingpath(common, *cc, cc + 1, parent->top != NULL ? &parent->top->nextbackt… in compile_matchingpath()
8425 if (*(cc + GET(cc, 1)) >= OP_CRSTAR && *(cc + GET(cc, 1)) <= OP_CRPOSRANGE) in compile_matchingpath()
8426 cc = compile_iterator_matchingpath(common, cc, parent); in compile_matchingpath()
8428cc = compile_char1_matchingpath(common, *cc, cc + 1, parent->top != NULL ? &parent->top->nextbackt… in compile_matchingpath()
8434 if (cc[1 + IMM2_SIZE] >= OP_CRSTAR && cc[1 + IMM2_SIZE] <= OP_CRPOSRANGE) in compile_matchingpath()
8435 cc = compile_ref_iterator_matchingpath(common, cc, parent); in compile_matchingpath()
8438 …compile_ref_matchingpath(common, cc, parent->top != NULL ? &parent->top->nextbacktracks : &parent-… in compile_matchingpath()
8439 cc += 1 + IMM2_SIZE; in compile_matchingpath()
8445 if (cc[1 + 2 * IMM2_SIZE] >= OP_CRSTAR && cc[1 + 2 * IMM2_SIZE] <= OP_CRPOSRANGE) in compile_matchingpath()
8446 cc = compile_ref_iterator_matchingpath(common, cc, parent); in compile_matchingpath()
8449 …compile_dnref_search(common, cc, parent->top != NULL ? &parent->top->nextbacktracks : &parent->top… in compile_matchingpath()
8450 …compile_ref_matchingpath(common, cc, parent->top != NULL ? &parent->top->nextbacktracks : &parent-… in compile_matchingpath()
8451 cc += 1 + 2 * IMM2_SIZE; in compile_matchingpath()
8456 cc = compile_recurse_matchingpath(common, cc, parent); in compile_matchingpath()
8460 cc = compile_callout_matchingpath(common, cc, parent); in compile_matchingpath()
8467 PUSH_BACKTRACK_NOVALUE(sizeof(assert_backtrack), cc); in compile_matchingpath()
8468 cc = compile_assert_matchingpath(common, cc, BACKTRACK_AS(assert_backtrack), FALSE); in compile_matchingpath()
8472 PUSH_BACKTRACK_NOVALUE(sizeof(braminzero_backtrack), cc); in compile_matchingpath()
8473 cc = bracketend(cc + 1); in compile_matchingpath()
8474 if (*(cc - 1 - LINK_SIZE) != OP_KETRMIN) in compile_matchingpath()
8497 cc = compile_bracket_matchingpath(common, cc, parent); in compile_matchingpath()
8501 if (cc[1] > OP_ASSERTBACK_NOT) in compile_matchingpath()
8502 cc = compile_bracket_matchingpath(common, cc, parent); in compile_matchingpath()
8505 PUSH_BACKTRACK_NOVALUE(sizeof(assert_backtrack), cc); in compile_matchingpath()
8506 cc = compile_assert_matchingpath(common, cc, BACKTRACK_AS(assert_backtrack), FALSE); in compile_matchingpath()
8515 cc = compile_bracketpos_matchingpath(common, cc, parent); in compile_matchingpath()
8519 PUSH_BACKTRACK_NOVALUE(sizeof(backtrack_common), cc); in compile_matchingpath()
8525 OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, (sljit_sw)(cc + 2)); in compile_matchingpath()
8533 OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(2), SLJIT_IMM, (sljit_sw)(cc + 2)); in compile_matchingpath()
8537 cc += 1 + 2 + cc[1]; in compile_matchingpath()
8547 cc = compile_control_verb_matchingpath(common, cc, parent); in compile_matchingpath()
8553 cc = compile_fail_accept_matchingpath(common, cc, parent); in compile_matchingpath()
8557 cc = compile_close_matchingpath(common, cc); in compile_matchingpath()
8561 cc = bracketend(cc + 1); in compile_matchingpath()
8568 if (cc == NULL) in compile_matchingpath()
8575 PUSH_BACKTRACK_NOVALUE(sizeof(then_trap_backtrack), cc); in compile_matchingpath()
8576 BACKTRACK_AS(then_trap_backtrack)->common.cc = then_trap_opcode; in compile_matchingpath()
8580 SLJIT_ASSERT(cc == ccend); in compile_matchingpath()
8601 pcre_uchar *cc = current->cc; in compile_iterator_backtrackingpath() local
8608 int private_data_ptr = PRIVATE_DATA(cc); in compile_iterator_backtrackingpath()
8613 cc = get_iterator_parameters(common, cc, &opcode, &type, &max, &min, NULL); in compile_iterator_backtrackingpath()
8661 compile_char1_matchingpath(common, type, cc, &jumplist); in compile_iterator_backtrackingpath()
8679 compile_char1_matchingpath(common, type, cc, &jumplist); in compile_iterator_backtrackingpath()
8717 compile_char1_matchingpath(common, type, cc, &jumplist); in compile_iterator_backtrackingpath()
8745 pcre_uchar *cc = current->cc; in compile_ref_iterator_backtrackingpath() local
8746 BOOL ref = (*cc == OP_REF || *cc == OP_REFI); in compile_ref_iterator_backtrackingpath()
8749 type = cc[ref ? 1 + IMM2_SIZE : 1 + 2 * IMM2_SIZE]; in compile_ref_iterator_backtrackingpath()
8796 pcre_uchar *cc = current->cc; in compile_assert_backtrackingpath() local
8800 SLJIT_ASSERT(*cc != OP_BRAMINZERO); in compile_assert_backtrackingpath()
8801 if (*cc == OP_BRAZERO) in compile_assert_backtrackingpath()
8803 bra = *cc; in compile_assert_backtrackingpath()
8804 cc++; in compile_assert_backtrackingpath()
8828 if (*cc == OP_ASSERT_NOT || *cc == OP_ASSERTBACK_NOT) in compile_assert_backtrackingpath()
8839 if (*cc == OP_ASSERT || *cc == OP_ASSERTBACK) in compile_assert_backtrackingpath()
8867 pcre_uchar *cc = current->cc; in compile_bracket_backtrackingpath() local
8884 if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) in compile_bracket_backtrackingpath()
8886 bra = *cc; in compile_bracket_backtrackingpath()
8887 cc++; in compile_bracket_backtrackingpath()
8890 opcode = *cc; in compile_bracket_backtrackingpath()
8891 ccbegin = bracketend(cc) - 1 - LINK_SIZE; in compile_bracket_backtrackingpath()
8904 ccbegin = cc; in compile_bracket_backtrackingpath()
8905 cc += GET(cc, 1); in compile_bracket_backtrackingpath()
8906 has_alternatives = *cc == OP_ALT; in compile_bracket_backtrackingpath()
8911 if (SLJIT_UNLIKELY(opcode == OP_COND) && (*cc == OP_KETRMAX || *cc == OP_KETRMIN)) in compile_bracket_backtrackingpath()
9096 if (*cc == OP_ALT) in compile_bracket_backtrackingpath()
9098 ccprev = cc + 1 + LINK_SIZE; in compile_bracket_backtrackingpath()
9099 cc += GET(cc, 1); in compile_bracket_backtrackingpath()
9112 compile_matchingpath(common, ccprev, cc, current); in compile_bracket_backtrackingpath()
9203 while (*cc == OP_ALT); in compile_bracket_backtrackingpath()
9248 cc = ccbegin + GET(ccbegin, 1); in compile_bracket_backtrackingpath()
9254 …stacksize += CURRENT_AS(bracket_backtrack)->u.framesize + ((ket != OP_KET || *cc == OP_ALT) ? 2 : … in compile_bracket_backtrackingpath()
9256 else if (ket == OP_KETRMAX || (*cc == OP_ALT && ket != OP_KETRMIN)) in compile_bracket_backtrackingpath()
9328 if (*current->cc == OP_CBRAPOS || *current->cc == OP_SCBRAPOS) in compile_bracketpos_backtrackingpath()
9330 offset = (GET2(current->cc, 1 + LINK_SIZE)) << 1; in compile_bracketpos_backtrackingpath()
9366 if (current->cc[1] > OP_ASSERTBACK_NOT) in compile_braminzero_backtrackingpath()
9369 compile_bracket_matchingpath(common, current->cc, current); in compile_braminzero_backtrackingpath()
9375 backtrack.common.cc = current->cc; in compile_braminzero_backtrackingpath()
9378 compile_assert_matchingpath(common, current->cc, &backtrack, FALSE); in compile_braminzero_backtrackingpath()
9386 pcre_uchar opcode = *current->cc; in compile_control_verb_backtrackingpath()
9430 OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_IMM, (sljit_sw)(current->cc + 2)); in compile_control_verb_backtrackingpath()
9485 switch(*current->cc) in compile_backtrackingpath()
9596 if (current->cc[1] > OP_ASSERTBACK_NOT) in compile_backtrackingpath()
9666 pcre_uchar *cc = common->start + common->currententry->start; in compile_recurse() local
9667 pcre_uchar *ccbegin = cc + 1 + LINK_SIZE + (*cc == OP_BRA ? 0 : IMM2_SIZE); in compile_recurse()
9668 pcre_uchar *ccend = bracketend(cc) - (1 + LINK_SIZE); in compile_recurse()
9670 int framesize = get_framesize(common, cc, NULL, TRUE, &needs_control_head); in compile_recurse()
9680 SLJIT_ASSERT(*cc == OP_BRA || *cc == OP_CBRA || *cc == OP_CBRAPOS || *cc == OP_SCBRA || *cc == OP_S… in compile_recurse()
9684 alternativesize = *(cc + GET(cc, 1)) == OP_ALT ? 1 : 0; in compile_recurse()
9699 init_frame(common, cc, NULL, framesize + alternativesize - 1, alternativesize, TRUE); in compile_recurse()
9709 altbacktrack.cc = ccbegin; in compile_recurse()
9710 cc += GET(cc, 1); in compile_recurse()
9716 if (altbacktrack.cc != ccbegin) in compile_recurse()
9719 compile_matchingpath(common, altbacktrack.cc, cc, &altbacktrack); in compile_recurse()
9730 if (*cc != OP_ALT) in compile_recurse()
9733 altbacktrack.cc = cc + 1 + LINK_SIZE; in compile_recurse()
9734 cc += GET(cc, 1); in compile_recurse()
9826 rootbacktrack.cc = (pcre_uchar *)re + re->name_table_offset + re->name_count * re->name_entry_size; in PRIV()
9828 common->start = rootbacktrack.cc; in PRIV()