com php-src: Speed up fetching of class entries for self:: parent:: and static::: Zend/zend_compile.c Zend/zend_vm_def.h Zend/zend_vm_execute.h
Zend/zend_vm_opcodes.c Z end/zend_vm_opcodes.h ext/opcache/Optimizer/block_pas s.c ext/opcache/Optimizer/compact_literals.c ext/opca
che/Optimizer/optimize_func_calls.c ext/opcache/Optimiz er/pass1_5.c ext/opcache/Optimizer/zend_optimizer .c
| From: | Dmitry Stogov | Date: | Wed, 28 Oct 2015 18:26:52 +0000 |
| Subject: | com php-src: Speed up fetching of class entries for self:: parent:: and static::: Zend/zend_compile.c Zend/zend_vm_def.h Zend/zend_vm_execute.h Zend/zend_vm_opcodes.c Z end/zend_vm_opcodes.h ext/opcache/Optimizer/block_pas s.c ext/opcache/Optimizer/compact_literals.c ext/opca che/Optimizer/optimize_func_calls.c ext/opcache/Optimiz er/pass1_5.c ext/opcache/Optimizer/zend_optimizer .c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-89553@lists.php.net to get a copy of this message | ||
Commit: eb7be5379d9b6e20f4d086bd688103fe75f46977
Author: Dmitry Stogov <dmitry@zend.com> Tue, 27 Oct 2015 15:47:58 +0300
Parents: ff0ec065623a7563cc9a99586a9cb2f351f3cbfa
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=eb7be5379d9b6e20f4d086bd688103fe75f46977
Log:
Speed up fetching of class entries for self:: parent:: and static::
This is generalized solution for Bob's idea of speed up self::method() calls without
ZEND_FETCH_CLASS.
At first, it adds few new opcodes to separate class related behaviour:
FETCH_STATIC_PROP_R
FETCH_STATIC_PROP_W
FETCH_STATIC_PROP_RW
FETCH_STATIC_PROP_FUNC_ARG
FETCH_STATIC_PROP_UNSET
FETCH_STATIC_PROP_IS
UNSET_STATIC_PROP
ISSET_ISEMPTY_STATIC_PROP
FETCH_CLASS_CONSTANT
At seconds, it enables IS_UNUSED operand to fetch (self, parent or static without separate
FETCH_CLASS) for new opcodes and the following ones:
INIT_STATIC_METHOD_CALL
NEW
END_INSTANCEOF
Finaly, opcache optimizer had to be fixed to support new opcodes.
Changed paths:
M Zend/zend_compile.c
M Zend/zend_vm_def.h
M Zend/zend_vm_execute.h
M Zend/zend_vm_opcodes.c
M Zend/zend_vm_opcodes.h
M ext/opcache/Optimizer/block_pass.c
M ext/opcache/Optimizer/compact_literals.c
M ext/opcache/Optimizer/optimize_func_calls.c
M ext/opcache/Optimizer/pass1_5.c
M ext/opcache/Optimizer/zend_optimizer.c
Diff: <Diff exceeded maximum size>