RE: runtime JIT

php.internals

Dmitry Stogov

19 years ago
The patch is attached. To use runtime JIT you will need to change zend_register_auto_global() to zend_register_auto_global_ex() with "1" as the last argument. Compile-time JIT is still supported too. Note that the significant part of the patch is reverting of "autoglobals CV" patch, that is reimplemented using CG(auto_globals_cache). Any objections? Thanks. Dmitry.

Pierre Joye

19 years ago
Hi Dmitry! On 2/14/07, Dmitry Stogov <dmitry@zend.com> wrote:
> The patch is attached. > > To use runtime JIT you will need to change zend_register_auto_global() to > zend_register_auto_global_ex() with "1" as the last argument. Compile-time > JIT is still supported too. > > Note that the significant part of the patch is reverting of "autoglobals CV" > patch, that is reimplemented using CG(auto_globals_cache). > > Any objections?
The patch looks good and it implements the concept I described in my initial proposal. So no, no objection here. For the record, what needs to be done now is (after a short discussion with Dmitry): - implement the callback to decode the input - support multiple calls of http_input_encoding, GPC must be re-encoded (rearm JIT) a new function is required and a couple of changes in the hash creations (call dtor, etc.) - Add test cases - Implement unicode support in ext/filter I do not have the time to test and work on that until next week on Wednesday. If someone likes to work on one part or another, please raise the hand :) Thanks for your work! --Pierre

Andrei Zmievski

19 years ago
Pierre, How's it going with this list you posted? Last I heard you had some issues with ext/session. Can you elaborate please? -Andrei On Feb 15, 2007, at 6:22 AM, Pierre wrote:

Pierre Joye

19 years ago
Hi Andrei, On 3/5/07, Andrei Zmievski <andrei@gravitonic.com> wrote:
> Pierre, > > How's it going with this list you posted? Last I heard you had some > issues with ext/session. Can you elaborate please?
The issue is not specifically with the ext/session but with extensions accessing the input data during RINIT. For example, ext/session tries to access the HTTP input to fetch a possible SESSID. To keep the JIT at runtime only I like to add an internals API to access the input value as raw/binary data, without decoding them. It will be the responsibility of the extension to correctly decode the data. It would be possible to implement JIT in each extension, but as soon as the script uses a different encoding than the extension (which is defined by http.input_encoding or another specific php.ini option), we will have to decode the complete input two times (or more on error). I'm reviewing the other extension for the http_globals usage. I will come with the API and the patch as soon as possible. Cheers, --Pierre

Lukas Kahwe Smith

19 years ago
Hello, From my understanding the main thing that is holding back a first preview/alpha release of PHP6 is solving the below explained issues in the JIT parameter handling. Pierre and Dmitry were the two most likely candidates to implement this, but I guess both of them are busy (?). Maybe someone else feels capable of taking over this task for them? regards, Lukas Pierre wrote:

Andrei Zmievski

19 years ago
Just to be clear: does this implement runtime JIT per-element or for the whole array at once? -Andrei On Feb 14, 2007, at 4:07 AM, Dmitry Stogov wrote:

Pierre Joye

19 years ago
On 2/15/07, Andrei Zmievski <andrei@gravitonic.com> wrote:
> Just to be clear: does this implement runtime JIT per-element or for > the whole array at once?
The whole array. It is exactly like what we have now for the compile-time JIT. --Pierre