This is the final version: https://github.com/php/php-src/pull/1824
Thanks. Dmitry. ________________________________ From: Dmitry Stogov Sent: Friday, March 11, 2016 17:31 To: Nikita Popov; Xinchen Hui; Bob Weinand Subject: Type specialised opcode handlers Hi, I like to inform you that I'm working on implementation of type specialized opcode handlers. DFA pass collects all necessary information, and opcode substitution become a really simple task. I know, Nikita made similar work in his SSA-based PHP optimiser, but the type inference problem is, actually, solved long time ago in php-jit project. The PoC is here: https://gist.github.com/dstogov/74b2845116d5e53108dd This PoC is to measure the impact of optimisation only (php should be compiled with -DHAVE_DFA_PASS=1) It increases PHP code size by 6KB, Mandelbrot becomes ~30% faster, bench.php ~5% faster, real-life apps are not affected. However, I don't like to introduce new opcodes like ZEND_ADD_INT. I like to use the same ZEND_ADD opcode and make optimizer to update opline->handler accordingly to inferred types. I think, it's possible to "save" inferred type info in opline->extended_value, and later relay on it in zend_vm_get_opcode_handler(). So all the magic is going to be done in zend_vm_gen.php. Related ideas are welcome. P.S. You might see my recent commits into zend_vm_gen.php that introduce extra specializations useful for this. Thanks. Dmitry.