Just wanted to resurrect this thread... I just got a JIT stack size limit error 
(which Composer reports as "unknown error" because it has no logic for the new 
constant) while running "composer require somepackage" with PHP 7 and JIT 
enabled.

IMO, a pattern modifier would be good so that applications can disable JIT on 
demand.

I'd also like to re-start a discussion on changing the default for pcre.jit to 
0.


> On 04.08.2015, at 23:20, Anatol Belski <anatol....@belski.net> wrote:
> 
> Hi Christoph,
> 
>> -----Original Message-----
>> From: Christoph Becker [mailto:cmbecke...@gmx.de]
>> Sent: Tuesday, August 4, 2015 7:40 PM
>> To: Anatol Belski <anatol....@belski.net>; 'Christoph Becker'
>> <cmbecke...@gmx.de>; 'Pierre Joye' <pierre....@gmail.com>
>> Cc: 'PHP internals' <internals@lists.php.net>
>> Subject: Re: [PHP-DEV] PCRE JIT stack size limit
>> 
>> On 04.08.2015 at 16:33, Anatol Belski wrote:
>> 
>>>> -----Original Message-----
>>>> From: Christoph Becker [mailto:cmbecke...@gmx.de]
>>>> Sent: Tuesday, August 4, 2015 1:16 PM
>>>> To: Anatol Belski <anatol....@belski.net>; 'Christoph Becker'
>>>> <cmbecke...@gmx.de>; 'Pierre Joye' <pierre....@gmail.com>
>>>> Cc: 'PHP internals' <internals@lists.php.net>
>>>> Subject: Re: [PHP-DEV] PCRE JIT stack size limit
>>>> 
>>>> I didn't mean to store all patterns in both variants, but rather as
>>>> requested.  Say, the PHP script starts with pcre.jit=0, so all
>>>> patterns will be stored studied without JIT.  Then the script changes
>>>> to pcre.jit=1.  Following cache lookups check whether an already
>>>> cached pattern was studied with JIT.  If not, a new cache entry is
>>>> made with the pattern studied with JIT (that new entry may replace
>>>> the old one or not; not sure what's best).  Changing back to
>>>> pcre.jit=0 will again keep the old patterns, but ensures that only those 
>>>> which
>> have been studied without JIT are retrieved from the cache.
>>>> 
>>> It needs to replace the old entry, the regex string is used as key. At 
>>> least per
>> current mechanism. When user changes the JIT config, I'd see it like as an
>> obvious hint. Like pcre.jit=0 - no more JIT study from now on.
>> 
>> Probably you're right that replacement is best.  However, the key is the 
>> full regex
>> string (including modifiers), AFAIK, and Adam already came up with the idea 
>> that
>> choosing between JIT and non-JIT might be done via a new modifier[1].
>> Something to consider, if it turns out that there is some real optimization
>> potential for userland to choose between both variants on a case-by-case 
>> basis.
>> 
> Yeah, that were a nice approach. Should be checked probably, whether there's 
> a corresponding perl pattern modifier (probably there is none, but shouldn't 
> be that bad). And also to evaluate what behavior were produced when say jit 
> is disabled but a modifier is passed.
> 
>>> Probably it would be needed to save the study flags with the cache entry, 
>>> looks
>> like the pcre_cache_entry struct should have a gap for that.
>> 
>> If I'm not mistaken, an additional flag wouldn't be necessary, because the
>> pcre_extra struct has the executable_jit field, which could be queried.
>> 
> Ok, that would be even better, given it's reliable.
> 
> Regards
> 
> Anatol
> 
> 
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to