[Pcre-svn] [145] code/trunk/doc/pcre2jit.3: Update JIT docum…

Top Page
Delete this message
Author: Subversion repository
Date:  
To: pcre-svn
Subject: [Pcre-svn] [145] code/trunk/doc/pcre2jit.3: Update JIT documentation
Revision: 145
          http://www.exim.org/viewvc/pcre2?view=rev&revision=145
Author:   ph10
Date:     2014-11-12 17:15:10 +0000 (Wed, 12 Nov 2014)


Log Message:
-----------
Update JIT documentation

Modified Paths:
--------------
    code/trunk/doc/pcre2jit.3


Modified: code/trunk/doc/pcre2jit.3
===================================================================
--- code/trunk/doc/pcre2jit.3    2014-11-12 16:57:56 UTC (rev 144)
+++ code/trunk/doc/pcre2jit.3    2014-11-12 17:15:10 UTC (rev 145)
@@ -1,4 +1,4 @@
-.TH PCRE2JIT 3 "08 November 2014" "PCRE2 10.00"
+.TH PCRE2JIT 3 "12 November 2014" "PCRE2 10.00"
 .SH NAME
 PCRE2 - Perl-compatible regular expressions (revised API)
 .SH "PCRE2 JUST-IN-TIME COMPILER SUPPORT"
@@ -27,11 +27,12 @@
 you want to use JIT. The support is limited to the following hardware
 platforms:
 .sp
-  ARM v5, v7, and Thumb2
+  ARM 32-bit (v5, v7, and Thumb2)
+  ARM 64-bit 
   Intel x86 32-bit and 64-bit
-  MIPS 32-bit
+  MIPS 32-bit and 64-bit
   Power PC 32-bit and 64-bit
-  SPARC 32-bit (experimental)
+  SPARC 32-bit
 .sp
 If --enable-jit is set on an unsupported platform, compilation fails.
 .P
@@ -50,10 +51,10 @@
 call \fBpcre2_jit_compile()\fP after successfully compiling a pattern with
 \fBpcre2_compile()\fP. This function has two arguments: the first is the
 compiled pattern pointer that was returned by \fBpcre2_compile()\fP, and the
-second is a set of option bits, which must include at least one of
-PCRE2_JIT_COMPLETE, PCRE2_JIT_PARTIAL_HARD, or PCRE2_JIT_PARTIAL_SOFT.
+second is zero or more of the following option bits: PCRE2_JIT_COMPLETE,
+PCRE2_JIT_PARTIAL_HARD, or PCRE2_JIT_PARTIAL_SOFT.
 .P
-If JIT support is not available, a call to \fBpcre2_jit_comple()\fP does
+If JIT support is not available, a call to \fBpcre2_jit_compile()\fP does
 nothing and returns PCRE2_ERROR_JIT_BADOPTION. Otherwise, the compiled pattern
 is passed to the JIT compiler, which turns it into machine code that executes
 much faster than the normal interpretive code, but yields exactly the same
@@ -69,6 +70,18 @@
 appropriate code is run if it is available. Otherwise, the pattern is matched
 using interpretive code.
 .P
+You can call \fBpcre2_jit_compile()\fP multiple times for the same compiled
+pattern. It does nothing if it has previously compiled code for any of the
+option bits. For example, you can call it once with PCRE2_JIT_COMPLETE and
+(perhaps later, when you find you need partial matching) again with
+PCRE2_JIT_COMPLETE and PCRE2_JIT_PARTIAL_HARD. This time it will ignore
+PCRE2_JIT_COMPLETE and just compile code for partial matching. If
+\fBpcre2_jit_compile()\fP is called with no option bits set, it immediately
+returns zero. This is an alternative way of testing if JIT is available.
+.P
+At present, it is not possible to free JIT compiled code except when the entire 
+compiled pattern is freed by calling \fBpcre2_free_code()\fP.
+.P
 In some circumstances you may need to call additional functions. These are
 described in the section entitled
 .\" HTML <a href="#stackcontrol">
@@ -155,7 +168,7 @@
 pointer to an opaque structure of type \fBpcre2_jit_stack\fP, or NULL if there
 is an error. The \fBpcre2_jit_stack_free()\fP function is used to free a stack
 that is no longer needed. (For the technically minded: the address space is
-allocated by mmap or VirtualAlloc.)  FIXME Is this right?
+allocated by mmap or VirtualAlloc.)
 .P
 JIT uses far less memory for recursion than the interpretive code,
 and a maximum stack size of 512K to 1M should be more than enough for any
@@ -173,7 +186,8 @@
 used. There are three cases for the values of the other two options:
 .sp
   (1) If \fIcallback\fP is NULL and \fIdata\fP is NULL, an internal 32K block
-      on the machine stack is used.
+      on the machine stack is used. This is the default when a match 
+      context is created. 
 .sp
   (2) If \fIcallback\fP is NULL and \fIdata\fP is not NULL, \fIdata\fP must be
       a pointer to a valid JIT stack, the result of calling
@@ -384,6 +398,6 @@
 .rs
 .sp
 .nf
-Last updated: 08 November 2014
+Last updated: 12 November 2014
 Copyright (c) 1997-2014 University of Cambridge.
 .fi