Re: [pcre-dev] Make JIT support all PCRE syntax

Αρχική Σελίδα
Delete this message
Συντάκτης: Zoltán Herczeg
Ημερομηνία:  
Προς: pcre-dev
Αντικείμενο: Re: [pcre-dev] Make JIT support all PCRE syntax
Hi Naden,

I was thinking about supporting them. However, the remaining ones are the most difficult ones.

callouts: JIT has a totally different internal representation that pcre_exec, and it cannot provide all values which pcre_exec can. However, we can define an own callout function for JIT, but that would require an API change.

mark and skip: I will probably start with them after the 16 bit work is finished, they don't seem that difficult.

apart from (*THEN), JIT probably can support all backtracking control verbs. (*ACCEPT) and (*FAIL) are already supported.

Partial matching can also be supported, but through different study options. I am thinking about adding new options like: PCRE_STUDY_JIT_COMPILE_SOFT_PARTIAL, PCRE_STUDY_JIT_COMPILE_HARD_PARTIAL and you could combine them:

pcre_study(..., PCRE_STUDY_JIT_COMPILE | PCRE_STUDY_JIT_COMPILE_SOFT_PARTIAL | PCRE_STUDY_JIT_COMPILE_HARD_PARTIAL, ...). This case the compilation would run 3 times, and you get 3 different machine code, one for normal match, one for soft, and another for partial match. Of course, if you need only one of them, you could specify only a single flag. pcre_exec would be clever enough to choose the appropriate function depending on the flags, and fallback if that particular function is not available. This also need (minor) API change, and I need to search for all end of buffer checks, but doesn't seem so difficult (at the moment xD)

Regards,
Zoltan

ND <nadenj@???> írta:
>Hi, Zoltan!>
>
> Supporting OP_NCREF, OP_RREF and OP_NRREF by the JIT compiler>
>

It's significant step. But callouts and backtracking control verbs are >
stay needed for complex data analyzing. Is there plans to support them in >
JIT?>