Συντάκτης: 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?>