| 373 |
#define OVECTOR_START (8 * sizeof(sljit_w)) |
#define OVECTOR_START (8 * sizeof(sljit_w)) |
| 374 |
#define OVECTOR(i) (OVECTOR_START + (i) * sizeof(sljit_w)) |
#define OVECTOR(i) (OVECTOR_START + (i) * sizeof(sljit_w)) |
| 375 |
#define OVECTOR_PRIV(i) (common->cbraptr + (i) * sizeof(sljit_w)) |
#define OVECTOR_PRIV(i) (common->cbraptr + (i) * sizeof(sljit_w)) |
| 376 |
#define PRIV(cc) (common->localptrs[(cc) - common->start]) |
#define PRIV_DATA(cc) (common->localptrs[(cc) - common->start]) |
| 377 |
|
|
| 378 |
/* Shortcuts. */ |
/* Shortcuts. */ |
| 379 |
#define DEFINE_COMPILER \ |
#define DEFINE_COMPILER \ |
| 522 |
case OP_NOTPOSQUERYI: |
case OP_NOTPOSQUERYI: |
| 523 |
cc += 2; |
cc += 2; |
| 524 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 525 |
if (common->utf8 && cc[-1] >= 0xc0) cc += _pcre_utf8_table4[cc[-1] & 0x3f]; |
if (common->utf8 && cc[-1] >= 0xc0) cc += PRIV(utf8_table4)[cc[-1] & 0x3f]; |
| 526 |
#endif |
#endif |
| 527 |
return cc; |
return cc; |
| 528 |
|
|
| 544 |
case OP_NOTPOSUPTOI: |
case OP_NOTPOSUPTOI: |
| 545 |
cc += 4; |
cc += 4; |
| 546 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 547 |
if (common->utf8 && cc[-1] >= 0xc0) cc += _pcre_utf8_table4[cc[-1] & 0x3f]; |
if (common->utf8 && cc[-1] >= 0xc0) cc += PRIV(utf8_table4)[cc[-1] & 0x3f]; |
| 548 |
#endif |
#endif |
| 549 |
return cc; |
return cc; |
| 550 |
|
|
| 938 |
case OP_SBRAPOS: |
case OP_SBRAPOS: |
| 939 |
case OP_SCOND: |
case OP_SCOND: |
| 940 |
count = 1; |
count = 1; |
| 941 |
srcw[0] = PRIV(cc); |
srcw[0] = PRIV_DATA(cc); |
| 942 |
SLJIT_ASSERT(srcw[0] != 0); |
SLJIT_ASSERT(srcw[0] != 0); |
| 943 |
cc += 1 + LINK_SIZE; |
cc += 1 + LINK_SIZE; |
| 944 |
break; |
break; |
| 954 |
case OP_SCBRAPOS: |
case OP_SCBRAPOS: |
| 955 |
count = 2; |
count = 2; |
| 956 |
srcw[1] = OVECTOR_PRIV(GET2(cc, 1 + LINK_SIZE)); |
srcw[1] = OVECTOR_PRIV(GET2(cc, 1 + LINK_SIZE)); |
| 957 |
srcw[0] = PRIV(cc); |
srcw[0] = PRIV_DATA(cc); |
| 958 |
SLJIT_ASSERT(srcw[0] != 0); |
SLJIT_ASSERT(srcw[0] != 0); |
| 959 |
cc += 1 + LINK_SIZE + 2; |
cc += 1 + LINK_SIZE + 2; |
| 960 |
break; |
break; |
| 965 |
if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) |
if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) |
| 966 |
{ |
{ |
| 967 |
count = 1; |
count = 1; |
| 968 |
srcw[0] = PRIV(cc); |
srcw[0] = PRIV_DATA(cc); |
| 969 |
SLJIT_ASSERT(srcw[0] != 0); |
SLJIT_ASSERT(srcw[0] != 0); |
| 970 |
} |
} |
| 971 |
cc += 1 + LINK_SIZE; |
cc += 1 + LINK_SIZE; |
| 1320 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 1321 |
if (common->utf8 && c > 127) |
if (common->utf8 && c > 127) |
| 1322 |
{ |
{ |
| 1323 |
n = _pcre_utf8_table4[*cc & 0x3f]; |
n = PRIV(utf8_table4)[*cc & 0x3f]; |
| 1324 |
while ((bit & 0x3f) == 0) |
while ((bit & 0x3f) == 0) |
| 1325 |
{ |
{ |
| 1326 |
n--; |
n--; |
| 1565 |
JUMPHERE(jump); |
JUMPHERE(jump); |
| 1566 |
|
|
| 1567 |
/* We only have types for characters less than 256. */ |
/* We only have types for characters less than 256. */ |
| 1568 |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP2), (sljit_w)_pcre_utf8_table4 - 0xc0); |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP2), (sljit_w)PRIV(utf8_table4) - 0xc0); |
| 1569 |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
| 1570 |
OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 0); |
OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, 0); |
| 1571 |
sljit_emit_fast_return(compiler, RETURN_ADDR, 0); |
sljit_emit_fast_return(compiler, RETURN_ADDR, 0); |
| 1589 |
|
|
| 1590 |
sljit_emit_fast_enter(compiler, RETURN_ADDR, 0, 1, 5, 5, common->localsize); |
sljit_emit_fast_enter(compiler, RETURN_ADDR, 0, 1, 5, 5, common->localsize); |
| 1591 |
OP2(SLJIT_LSHR, TMP2, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_SHIFT); |
OP2(SLJIT_LSHR, TMP2, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_SHIFT); |
| 1592 |
OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), (sljit_w)_pcre_ucd_stage1); |
OP1(SLJIT_MOV_UB, TMP2, 0, SLJIT_MEM1(TMP2), (sljit_w)PRIV(ucd_stage1)); |
| 1593 |
OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_MASK); |
OP2(SLJIT_AND, TMP1, 0, TMP1, 0, SLJIT_IMM, UCD_BLOCK_MASK); |
| 1594 |
OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, UCD_BLOCK_SHIFT); |
OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, UCD_BLOCK_SHIFT); |
| 1595 |
OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP2, 0); |
OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP2, 0); |
| 1596 |
OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, (sljit_w)_pcre_ucd_stage2); |
OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, (sljit_w)PRIV(ucd_stage2)); |
| 1597 |
OP1(SLJIT_MOV_UH, TMP2, 0, SLJIT_MEM2(TMP2, TMP1), 1); |
OP1(SLJIT_MOV_UH, TMP2, 0, SLJIT_MEM2(TMP2, TMP1), 1); |
| 1598 |
OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, (sljit_w)_pcre_ucd_records + SLJIT_OFFSETOF(ucd_record, chartype)); |
OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, (sljit_w)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, chartype)); |
| 1599 |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM2(TMP1, TMP2), 3); |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM2(TMP1, TMP2), 3); |
| 1600 |
sljit_emit_fast_return(compiler, RETURN_ADDR, 0); |
sljit_emit_fast_return(compiler, RETURN_ADDR, 0); |
| 1601 |
} |
} |
| 1687 |
if (common->utf8) |
if (common->utf8) |
| 1688 |
{ |
{ |
| 1689 |
singlebyte = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); |
singlebyte = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); |
| 1690 |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)_pcre_utf8_table4 - 0xc0); |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)PRIV(utf8_table4) - 0xc0); |
| 1691 |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
| 1692 |
JUMPHERE(singlebyte); |
JUMPHERE(singlebyte); |
| 1693 |
} |
} |
| 1748 |
if (common->utf8) |
if (common->utf8) |
| 1749 |
{ |
{ |
| 1750 |
CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0, start); |
CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0, start); |
| 1751 |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)_pcre_utf8_table4 - 0xc0); |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)PRIV(utf8_table4) - 0xc0); |
| 1752 |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
| 1753 |
} |
} |
| 1754 |
#endif |
#endif |
| 1875 |
if (common->utf8) |
if (common->utf8) |
| 1876 |
{ |
{ |
| 1877 |
CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0, start); |
CMPTO(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0, start); |
| 1878 |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)_pcre_utf8_table4 - 0xc0); |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)PRIV(utf8_table4) - 0xc0); |
| 1879 |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
| 1880 |
} |
} |
| 1881 |
#endif |
#endif |
| 2287 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 2288 |
utf8length = 1; |
utf8length = 1; |
| 2289 |
if (common->utf8 && *cc >= 0xc0) |
if (common->utf8 && *cc >= 0xc0) |
| 2290 |
utf8length += _pcre_utf8_table4[*cc & 0x3f]; |
utf8length += PRIV(utf8_table4)[*cc & 0x3f]; |
| 2291 |
|
|
| 2292 |
do |
do |
| 2293 |
{ |
{ |
| 2449 |
{ |
{ |
| 2450 |
cc += 2; |
cc += 2; |
| 2451 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 2452 |
if (common->utf8 && cc[-1] >= 0xc0) cc += _pcre_utf8_table4[cc[-1] & 0x3f]; |
if (common->utf8 && cc[-1] >= 0xc0) cc += PRIV(utf8_table4)[cc[-1] & 0x3f]; |
| 2453 |
#endif |
#endif |
| 2454 |
#ifdef SUPPORT_UCP |
#ifdef SUPPORT_UCP |
| 2455 |
needschar = TRUE; |
needschar = TRUE; |
| 2459 |
{ |
{ |
| 2460 |
cc += 2; |
cc += 2; |
| 2461 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 2462 |
if (common->utf8 && cc[-1] >= 0xc0) cc += _pcre_utf8_table4[cc[-1] & 0x3f]; |
if (common->utf8 && cc[-1] >= 0xc0) cc += PRIV(utf8_table4)[cc[-1] & 0x3f]; |
| 2463 |
#endif |
#endif |
| 2464 |
cc++; |
cc++; |
| 2465 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 2466 |
if (common->utf8 && cc[-1] >= 0xc0) cc += _pcre_utf8_table4[cc[-1] & 0x3f]; |
if (common->utf8 && cc[-1] >= 0xc0) cc += PRIV(utf8_table4)[cc[-1] & 0x3f]; |
| 2467 |
#endif |
#endif |
| 2468 |
#ifdef SUPPORT_UCP |
#ifdef SUPPORT_UCP |
| 2469 |
needschar = TRUE; |
needschar = TRUE; |
| 2533 |
{ |
{ |
| 2534 |
if (scriptreg == TMP1) |
if (scriptreg == TMP1) |
| 2535 |
{ |
{ |
| 2536 |
OP1(SLJIT_MOV, scriptreg, 0, SLJIT_IMM, (sljit_w)_pcre_ucd_records + SLJIT_OFFSETOF(ucd_record, script)); |
OP1(SLJIT_MOV, scriptreg, 0, SLJIT_IMM, (sljit_w)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, script)); |
| 2537 |
OP1(SLJIT_MOV_UB, scriptreg, 0, SLJIT_MEM2(scriptreg, TMP2), 3); |
OP1(SLJIT_MOV_UB, scriptreg, 0, SLJIT_MEM2(scriptreg, TMP2), 3); |
| 2538 |
} |
} |
| 2539 |
else |
else |
| 2540 |
{ |
{ |
| 2541 |
OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 3); |
OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 3); |
| 2542 |
OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, SLJIT_IMM, (sljit_w)_pcre_ucd_records + SLJIT_OFFSETOF(ucd_record, script)); |
OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, SLJIT_IMM, (sljit_w)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, script)); |
| 2543 |
OP1(SLJIT_MOV_UB, scriptreg, 0, SLJIT_MEM1(TMP2), 0); |
OP1(SLJIT_MOV_UB, scriptreg, 0, SLJIT_MEM1(TMP2), 0); |
| 2544 |
} |
} |
| 2545 |
} |
} |
| 2660 |
break; |
break; |
| 2661 |
|
|
| 2662 |
case PT_GC: |
case PT_GC: |
| 2663 |
c = _pcre_ucp_typerange[(int)cc[1] * 2]; |
c = PRIV(ucp_typerange)[(int)cc[1] * 2]; |
| 2664 |
SET_TYPE_OFFSET(c); |
SET_TYPE_OFFSET(c); |
| 2665 |
jump = CMP(SLJIT_C_LESS_EQUAL ^ invertcmp, typereg, 0, SLJIT_IMM, _pcre_ucp_typerange[(int)cc[1] * 2 + 1] - c); |
jump = CMP(SLJIT_C_LESS_EQUAL ^ invertcmp, typereg, 0, SLJIT_IMM, PRIV(ucp_typerange)[(int)cc[1] * 2 + 1] - c); |
| 2666 |
break; |
break; |
| 2667 |
|
|
| 2668 |
case PT_PC: |
case PT_PC: |
| 2806 |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); |
| 2807 |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, 1); |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, 1); |
| 2808 |
jump[0] = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); |
jump[0] = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); |
| 2809 |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)_pcre_utf8_table4 - 0xc0); |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)PRIV(utf8_table4) - 0xc0); |
| 2810 |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
| 2811 |
JUMPHERE(jump[0]); |
JUMPHERE(jump[0]); |
| 2812 |
return cc; |
return cc; |
| 3021 |
case OP_CHARI: |
case OP_CHARI: |
| 3022 |
length = 1; |
length = 1; |
| 3023 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 3024 |
if (common->utf8 && *cc >= 0xc0) length += _pcre_utf8_table4[*cc & 0x3f]; |
if (common->utf8 && *cc >= 0xc0) length += PRIV(utf8_table4)[*cc & 0x3f]; |
| 3025 |
#endif |
#endif |
| 3026 |
if (type == OP_CHAR || !char_has_othercase(common, cc) || char_get_othercase_bit(common, cc) != 0) |
if (type == OP_CHAR || !char_has_othercase(common, cc) || char_get_othercase_bit(common, cc) != 0) |
| 3027 |
{ |
{ |
| 3058 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 3059 |
if (common->utf8) |
if (common->utf8) |
| 3060 |
{ |
{ |
| 3061 |
if (*cc >= 0xc0) length += _pcre_utf8_table4[*cc & 0x3f]; |
if (*cc >= 0xc0) length += PRIV(utf8_table4)[*cc & 0x3f]; |
| 3062 |
|
|
| 3063 |
check_input_end(common, fallbacks); |
check_input_end(common, fallbacks); |
| 3064 |
GETCHAR(c, cc); |
GETCHAR(c, cc); |
| 3077 |
/* Skip the variable-length character. */ |
/* Skip the variable-length character. */ |
| 3078 |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, 1); |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, 1); |
| 3079 |
jump[0] = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); |
jump[0] = CMP(SLJIT_C_LESS, TMP1, 0, SLJIT_IMM, 0xc0); |
| 3080 |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)_pcre_utf8_table4 - 0xc0); |
OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_w)PRIV(utf8_table4) - 0xc0); |
| 3081 |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); |
| 3082 |
JUMPHERE(jump[0]); |
JUMPHERE(jump[0]); |
| 3083 |
return cc + length; |
return cc + length; |
| 3192 |
size = 1; |
size = 1; |
| 3193 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 3194 |
if (common->utf8 && cc[1] >= 0xc0) |
if (common->utf8 && cc[1] >= 0xc0) |
| 3195 |
size += _pcre_utf8_table4[cc[1] & 0x3f]; |
size += PRIV(utf8_table4)[cc[1] & 0x3f]; |
| 3196 |
#endif |
#endif |
| 3197 |
} |
} |
| 3198 |
else if (*cc == OP_CHARI) |
else if (*cc == OP_CHARI) |
| 3204 |
if (char_has_othercase(common, cc + 1) && char_get_othercase_bit(common, cc + 1) == 0) |
if (char_has_othercase(common, cc + 1) && char_get_othercase_bit(common, cc + 1) == 0) |
| 3205 |
size = 0; |
size = 0; |
| 3206 |
else if (cc[1] >= 0xc0) |
else if (cc[1] >= 0xc0) |
| 3207 |
size += _pcre_utf8_table4[cc[1] & 0x3f]; |
size += PRIV(utf8_table4)[cc[1] & 0x3f]; |
| 3208 |
} |
} |
| 3209 |
else |
else |
| 3210 |
#endif |
#endif |
| 3557 |
bra = *cc; |
bra = *cc; |
| 3558 |
cc++; |
cc++; |
| 3559 |
} |
} |
| 3560 |
localptr = PRIV(cc); |
localptr = PRIV_DATA(cc); |
| 3561 |
SLJIT_ASSERT(localptr != 0); |
SLJIT_ASSERT(localptr != 0); |
| 3562 |
framesize = get_framesize(common, cc, FALSE); |
framesize = get_framesize(common, cc, FALSE); |
| 3563 |
fallback->framesize = framesize; |
fallback->framesize = framesize; |
| 4043 |
else if (opcode == OP_ONCE || opcode == OP_SBRA || opcode == OP_SCOND) |
else if (opcode == OP_ONCE || opcode == OP_SBRA || opcode == OP_SCOND) |
| 4044 |
{ |
{ |
| 4045 |
/* Other brackets simply allocate the next entry. */ |
/* Other brackets simply allocate the next entry. */ |
| 4046 |
localptr = PRIV(ccbegin); |
localptr = PRIV_DATA(ccbegin); |
| 4047 |
SLJIT_ASSERT(localptr != 0); |
SLJIT_ASSERT(localptr != 0); |
| 4048 |
FALLBACK_AS(bracket_fallback)->localptr = localptr; |
FALLBACK_AS(bracket_fallback)->localptr = localptr; |
| 4049 |
if (opcode == OP_ONCE) |
if (opcode == OP_ONCE) |
| 4429 |
} |
} |
| 4430 |
|
|
| 4431 |
opcode = *cc; |
opcode = *cc; |
| 4432 |
localptr = PRIV(cc); |
localptr = PRIV_DATA(cc); |
| 4433 |
SLJIT_ASSERT(localptr != 0); |
SLJIT_ASSERT(localptr != 0); |
| 4434 |
FALLBACK_AS(bracketpos_fallback)->localptr = localptr; |
FALLBACK_AS(bracketpos_fallback)->localptr = localptr; |
| 4435 |
switch(opcode) |
switch(opcode) |
| 4709 |
{ |
{ |
| 4710 |
*end = cc + 1; |
*end = cc + 1; |
| 4711 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 4712 |
if (common->utf8 && *cc >= 0xc0) *end += _pcre_utf8_table4[*cc & 0x3f]; |
if (common->utf8 && *cc >= 0xc0) *end += PRIV(utf8_table4)[*cc & 0x3f]; |
| 4713 |
#endif |
#endif |
| 4714 |
} |
} |
| 4715 |
return cc; |
return cc; |
| 6088 |
#undef CURRENT_AS |
#undef CURRENT_AS |
| 6089 |
|
|
| 6090 |
void |
void |
| 6091 |
_pcre_jit_compile(const real_pcre *re, pcre_extra *extra) |
PRIV(jit_compile)(const real_pcre *re, pcre_extra *extra) |
| 6092 |
{ |
{ |
| 6093 |
struct sljit_compiler *compiler; |
struct sljit_compiler *compiler; |
| 6094 |
fallback_common rootfallback; |
fallback_common rootfallback; |
| 6111 |
study = extra->study_data; |
study = extra->study_data; |
| 6112 |
|
|
| 6113 |
if (!tables) |
if (!tables) |
| 6114 |
tables = _pcre_default_tables; |
tables = PRIV(default_tables); |
| 6115 |
|
|
| 6116 |
memset(&rootfallback, 0, sizeof(fallback_common)); |
memset(&rootfallback, 0, sizeof(fallback_common)); |
| 6117 |
rootfallback.cc = (pcre_uchar *)re + re->name_table_offset + re->name_count * re->name_entry_size; |
rootfallback.cc = (pcre_uchar *)re + re->name_table_offset + re->name_count * re->name_entry_size; |
| 6467 |
} |
} |
| 6468 |
|
|
| 6469 |
int |
int |
| 6470 |
_pcre_jit_exec(const real_pcre *re, void *executable_func, |
PRIV(jit_exec)(const real_pcre *re, void *executable_func, |
| 6471 |
PCRE_SPTR subject, int length, int start_offset, int options, |
PCRE_SPTR subject, int length, int start_offset, int options, |
| 6472 |
int match_limit, int *offsets, int offsetcount) |
int match_limit, int *offsets, int offsetcount) |
| 6473 |
{ |
{ |
| 6523 |
} |
} |
| 6524 |
|
|
| 6525 |
void |
void |
| 6526 |
_pcre_jit_free(void *executable_func) |
PRIV(jit_free)(void *executable_func) |
| 6527 |
{ |
{ |
| 6528 |
executable_function *function = (executable_function*)executable_func; |
executable_function *function = (executable_function*)executable_func; |
| 6529 |
sljit_free_code(function->executable_func); |
sljit_free_code(function->executable_func); |