mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
8.41
This commit is contained in:
@ -79,9 +79,12 @@ API that is JIT-specific.
|
||||
</P>
|
||||
<P>
|
||||
If your program may sometimes be linked with versions of PCRE that are older
|
||||
than 8.20, but you want to use JIT when it is available, you can test
|
||||
the values of PCRE_MAJOR and PCRE_MINOR, or the existence of a JIT macro such
|
||||
as PCRE_CONFIG_JIT, for compile-time control of your code.
|
||||
than 8.20, but you want to use JIT when it is available, you can test the
|
||||
values of PCRE_MAJOR and PCRE_MINOR, or the existence of a JIT macro such as
|
||||
PCRE_CONFIG_JIT, for compile-time control of your code. Also beware that the
|
||||
<b>pcre_jit_exec()</b> function was not available at all before 8.32,
|
||||
and may not be available at all if PCRE isn't compiled with
|
||||
--enable-jit. See the "JIT FAST PATH API" section below for details.
|
||||
</P>
|
||||
<br><a name="SEC4" href="#TOC1">SIMPLE USE OF JIT</a><br>
|
||||
<P>
|
||||
@ -119,6 +122,20 @@ when you call <b>pcre_study()</b>:
|
||||
PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE
|
||||
PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE
|
||||
</pre>
|
||||
If using <b>pcre_jit_exec()</b> and supporting a pre-8.32 version of
|
||||
PCRE, you can insert:
|
||||
<pre>
|
||||
#if PCRE_MAJOR >= 8 && PCRE_MINOR >= 32
|
||||
pcre_jit_exec(...);
|
||||
#else
|
||||
pcre_exec(...)
|
||||
#endif
|
||||
</pre>
|
||||
but as described in the "JIT FAST PATH API" section below this assumes
|
||||
version 8.32 and later are compiled with --enable-jit, which may
|
||||
break.
|
||||
<br>
|
||||
<br>
|
||||
The JIT compiler generates different optimized code for each of the three
|
||||
modes (normal, soft partial, hard partial). When <b>pcre_exec()</b> is called,
|
||||
the appropriate code is run if it is available. Otherwise, the pattern is
|
||||
@ -428,6 +445,36 @@ fast path, and if invalid data is passed, the result is undefined.
|
||||
Bypassing the sanity checks and the <b>pcre_exec()</b> wrapping can give
|
||||
speedups of more than 10%.
|
||||
</P>
|
||||
<P>
|
||||
Note that the <b>pcre_jit_exec()</b> function is not available in versions of
|
||||
PCRE before 8.32 (released in November 2012). If you need to support versions
|
||||
that old you must either use the slower <b>pcre_exec()</b>, or switch between
|
||||
the two codepaths by checking the values of PCRE_MAJOR and PCRE_MINOR.
|
||||
</P>
|
||||
<P>
|
||||
Due to an unfortunate implementation oversight, even in versions 8.32
|
||||
and later there will be no <b>pcre_jit_exec()</b> stub function defined
|
||||
when PCRE is compiled with --disable-jit, which is the default, and
|
||||
there's no way to detect whether PCRE was compiled with --enable-jit
|
||||
via a macro.
|
||||
</P>
|
||||
<P>
|
||||
If you need to support versions older than 8.32, or versions that may
|
||||
not build with --enable-jit, you must either use the slower
|
||||
<b>pcre_exec()</b>, or switch between the two codepaths by checking the
|
||||
values of PCRE_MAJOR and PCRE_MINOR.
|
||||
</P>
|
||||
<P>
|
||||
Switching between the two by checking the version assumes that all the
|
||||
versions being targeted are built with --enable-jit. To also support
|
||||
builds that may use --disable-jit either <b>pcre_exec()</b> must be
|
||||
used, or a compile-time check for JIT via <b>pcre_config()</b> (which
|
||||
assumes the runtime environment will be the same), or as the Git
|
||||
project decided to do, simply assume that <b>pcre_jit_exec()</b> is
|
||||
present in 8.32 or later unless a compile-time flag is provided, see
|
||||
the "grep: un-break building with PCRE >= 8.32 without --enable-jit"
|
||||
commit in git.git for an example of that.
|
||||
</P>
|
||||
<br><a name="SEC12" href="#TOC1">SEE ALSO</a><br>
|
||||
<P>
|
||||
<b>pcreapi</b>(3)
|
||||
@ -443,9 +490,9 @@ Cambridge CB2 3QH, England.
|
||||
</P>
|
||||
<br><a name="SEC14" href="#TOC1">REVISION</a><br>
|
||||
<P>
|
||||
Last updated: 17 March 2013
|
||||
Last updated: 05 July 2017
|
||||
<br>
|
||||
Copyright © 1997-2013 University of Cambridge.
|
||||
Copyright © 1997-2017 University of Cambridge.
|
||||
<br>
|
||||
<p>
|
||||
Return to the <a href="index.html">PCRE index page</a>.
|
||||
|
@ -74,6 +74,11 @@ newline as data characters. However, in some Windows environments character 26
|
||||
maximum portability, therefore, it is safest to use only ASCII characters in
|
||||
<b>pcretest</b> input files.
|
||||
</P>
|
||||
<P>
|
||||
The input is processed using using C's string functions, so must not
|
||||
contain binary zeroes, even though in Unix-like environments, <b>fgets()</b>
|
||||
treats any bytes other than newline as data characters.
|
||||
</P>
|
||||
<br><a name="SEC3" href="#TOC1">PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES</a><br>
|
||||
<P>
|
||||
From release 8.30, two separate PCRE libraries can be built. The original one
|
||||
@ -1149,9 +1154,9 @@ Cambridge CB2 3QH, England.
|
||||
</P>
|
||||
<br><a name="SEC17" href="#TOC1">REVISION</a><br>
|
||||
<P>
|
||||
Last updated: 09 February 2014
|
||||
Last updated: 23 February 2017
|
||||
<br>
|
||||
Copyright © 1997-2014 University of Cambridge.
|
||||
Copyright © 1997-2017 University of Cambridge.
|
||||
<br>
|
||||
<p>
|
||||
Return to the <a href="index.html">PCRE index page</a>.
|
||||
|
Reference in New Issue
Block a user