64 |
Intel x86 32-bit and 64-bit |
Intel x86 32-bit and 64-bit |
65 |
MIPS 32-bit |
MIPS 32-bit |
66 |
Power PC 32-bit and 64-bit |
Power PC 32-bit and 64-bit |
67 |
SPARC 32-bit (experimental) |
SPARC 32-bit (experimental) |
68 |
</pre> |
</pre> |
69 |
If --enable-jit is set on an unsupported platform, compilation fails. |
If --enable-jit is set on an unsupported platform, compilation fails. |
70 |
</P> |
</P> |
73 |
available by calling <b>pcre_config()</b> with the PCRE_CONFIG_JIT option. The |
available by calling <b>pcre_config()</b> with the PCRE_CONFIG_JIT option. The |
74 |
result is 1 when JIT is available, and 0 otherwise. However, a simple program |
result is 1 when JIT is available, and 0 otherwise. However, a simple program |
75 |
does not need to check this in order to use JIT. The normal API is implemented |
does not need to check this in order to use JIT. The normal API is implemented |
76 |
in a way that falls back to the interpretive code if JIT is not available. For |
in a way that falls back to the interpretive code if JIT is not available. For |
77 |
programs that need the best possible performance, there is also a "fast path" |
programs that need the best possible performance, there is also a "fast path" |
78 |
API that is JIT-specific. |
API that is JIT-specific. |
79 |
</P> |
</P> |
80 |
<P> |
<P> |
407 |
</P> |
</P> |
408 |
<br><a name="SEC11" href="#TOC1">JIT FAST PATH API</a><br> |
<br><a name="SEC11" href="#TOC1">JIT FAST PATH API</a><br> |
409 |
<P> |
<P> |
410 |
Because the API described above falls back to interpreted execution when JIT is |
Because the API described above falls back to interpreted execution when JIT is |
411 |
not available, it is convenient for programs that are written for general use |
not available, it is convenient for programs that are written for general use |
412 |
in many environments. However, calling JIT via <b>pcre_exec()</b> does have a |
in many environments. However, calling JIT via <b>pcre_exec()</b> does have a |
413 |
performance impact. Programs that are written for use where JIT is known to be |
performance impact. Programs that are written for use where JIT is known to be |
414 |
available, and which need the best possible performance, can instead use a |
available, and which need the best possible performance, can instead use a |
415 |
"fast path" API to call JIT execution directly instead of calling |
"fast path" API to call JIT execution directly instead of calling |
416 |
<b>pcre_exec()</b> (obviously only for patterns that have been successfully |
<b>pcre_exec()</b> (obviously only for patterns that have been successfully |
417 |
studied by JIT). |
studied by JIT). |
418 |
</P> |
</P> |
419 |
<P> |
<P> |
420 |
The fast path function is called <b>pcre_jit_exec()</b>, and it takes exactly |
The fast path function is called <b>pcre_jit_exec()</b>, and it takes exactly |
421 |
the same arguments as <b>pcre_exec()</b>, plus one additional argument that |
the same arguments as <b>pcre_exec()</b>, plus one additional argument that |
422 |
must point to a JIT stack. The JIT stack arrangements described above do not |
must point to a JIT stack. The JIT stack arrangements described above do not |
423 |
apply. The return values are the same as for <b>pcre_exec()</b>. |
apply. The return values are the same as for <b>pcre_exec()</b>. |
424 |
</P> |
</P> |
431 |
fast path, and if invalid data is passed, the result is undefined. |
fast path, and if invalid data is passed, the result is undefined. |
432 |
</P> |
</P> |
433 |
<P> |
<P> |
434 |
Bypassing the sanity checks and the <b>pcre_exec()</b> wrapping can give |
Bypassing the sanity checks and the <b>pcre_exec()</b> wrapping can give |
435 |
speedups of more than 10%. |
speedups of more than 10%. |
436 |
</P> |
</P> |
437 |
<br><a name="SEC12" href="#TOC1">SEE ALSO</a><br> |
<br><a name="SEC12" href="#TOC1">SEE ALSO</a><br> |