Hi Anatol,
The project is in the very early development stage. Now, JIT passes almost all PHPT tests, makes 3 times speed-up on bench.php and no significant difference on real-life apps (+/-5% depended on opcache.jit setting. We are hardly working, implementing new ideas... I think it's too early to port this to Windows. Once, we think, we are ready, I'll ask your help. I suppose we won't need ELF->COFF porting, because we construct ELF objects just to debug JITed code in GDB and read PHP ELF object for simple symbol resolution in disassembler (most probably, both won't work on Windows anyway). zend_jit_x86.dasc will have to be adopted to support Windows calling convention, of course. Thanks. Dmitry. ________________________________ From: Anatol Belski <anatol....@belski.net> Sent: Wednesday, October 26, 2016 1:49:49 PM To: Dmitry Stogov; 'PHP internals list' Cc: Zeev Suraski; Xinchen Hui Subject: RE: [PHP-DEV] JIT for PHP project Hi Dmitry, > -----Original Message----- > From: Dmitry Stogov [mailto:dmi...@zend.com] > Sent: Thursday, September 1, 2016 1:57 PM > To: PHP internals list <internals@lists.php.net> > Cc: Zeev Suraski <z...@zend.com>; Xinchen Hui <xinche...@zend.com> > Subject: [PHP-DEV] JIT for PHP project > > Hi @internals, > > I'm glad to say that we have started a new JIT for PHP project and hope to > deliver some useful results for the next PHP version (probably 8.0). > We are very early in the process and for now there isn't any real performance > improvement yet. So far we spent just 2 weeks mainly working on JIT > infrastructure for x86/x86_64 Linux (machine code generation, disassembling, > debugging, profiling, etc), and we especially made the JIT code-generator as > minimal and simple as possible. The current state, is going to be used as a > starting point for research of different JIT approaches and their usability for PHP. > > The code is available at: https://github.com/zendtech/php-src/tree/jit- > dynasm/ext/opcache/jit > > The sources may be built and tested as regular PHP (no any special external > dependencies required). > JIT itself is implemented as a part of Opcache. > You may try it in action: > > sapi/cli/php -d opcache.jit_buffer_size=32M Zend/bench.php sapi/cli/php -d > opcache.jit_buffer_size=32M -d opcache.jit_debug=1 Zend/bench.php 2>&1 | > less > > As I mentioned we didn't try to achieve any real performance improvement yet, > although we do currently see 20% speedup on bench.php, but a bit of a > slowdown on real-life apps. > > Wish us luck :) > I just wanted to ask about the status. After starting to do some basic work https://github.com/zendtech/php-src/compare/jit-dynasm...weltling:jit-dynasm I've stumbled upon a couple of things - in zend_elf.c, the current binary that loads php is being read in, I guess this part needs to be ported to parse the Windows COFF format - with DynASM, seems zend_jit_x86.dasc will need to be extended for some compatibility, please correct if I'm wrong Regarding these, maybe you've one or another tip for me? Is this still relevant? Or I jump into it too early? Thanks anatol