Revision tags: php-8.1.7RC1 |
|
#
948ef10d |
| 25-Apr-2022 |
Dmitry Stogov |
Fix ISSET_ISEMPTY_VAR missoptimization This fixes oss-fuzz #46909 |
#
1aa5e939 |
| 25-Apr-2022 |
Dmitry Stogov |
Merge branch 'PHP-8.0' into PHP-8.1 * PHP-8.0: Reorder optimization passes to avoid miss-optimization
|
Revision tags: php-8.1.4RC1, php-8.1.3, php-8.1.2RC1, php-8.1.0, php-7.3.33 |
|
#
f313b65a |
| 15-Nov-2021 |
Dmitry Stogov |
Optimize closures nested in other closures |
Revision tags: php-7.3.32 |
|
#
1f19401f |
| 19-Oct-2021 |
Nikita Popov |
Handle operand replacement in JMP_NULL In this case it's not sufficient to replace the JMP_NULL operand, as it keeps the temporary alive and there may be more uses later. Fix this by
Handle operand replacement in JMP_NULL In this case it's not sufficient to replace the JMP_NULL operand, as it keeps the temporary alive and there may be more uses later. Fix this by generalizing existing handling for other similar opcodes like CASE/SWITCH and LIST_R. Fixes oss-fuzz 5820123475214336.
show more ...
|
#
5cdbfa89 |
| 30-Sep-2021 |
Nikita Popov |
Merge branch 'PHP-8.0' into PHP-8.1 * PHP-8.0: Fix cache slot assignment for ASSIGN_OBJ_OP
|
Revision tags: php-7.3.31, php-7.3.30, php-7.3.29 |
|
#
aff36587 |
| 29-Jun-2021 |
Patrick Allaert |
Fixed some spaces used instead of tabs |
#
0d9269de |
| 18-Jun-2021 |
Nikita Popov |
Extract helper for fetching class entry in optimizer This code is repeated a few time. Two occurrences additionally contained checks for user classes in CG(class_table) with the same
Extract helper for fetching class entry in optimizer This code is repeated a few time. Two occurrences additionally contained checks for user classes in CG(class_table) with the same file name, but as far as I know these should always be in the script class_table, so I'm omitting the check here.
show more ...
|
Revision tags: php-7.3.28, php-7.3.27 |
|
#
2f710f5b |
| 31-Jan-2021 |
codinghuang |
Support custom passes in Optimizer |
#
ba9c0b38 |
| 27-May-2021 |
Nikita Popov |
Export zend_unary_op_produces_error() and use in optimizer Don't repeat this logic, as it's going to become more complex. |
#
446471b9 |
| 18-May-2021 |
Nikita Popov |
Remove error suppression from zend_optimizer_eval_binary_op() All error conditions should be handled by zend_binary_op_produces_error(). Pointed out by Girgias. |
#
01b3fc03 |
| 06-May-2021 |
KsaR |
Update http->https in license (#6945) 1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https. 2. Update few license 3.0 to 3.01 as
Update http->https in license (#6945) 1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https. 2. Update few license 3.0 to 3.01 as 3.0 states "php 5.1.1, 4.1.1, and earlier". 3. In some license comments is "at through the world-wide-web" while most is without "at", so deleted. 4. fixed indentation in some files before |
show more ...
|
#
b82242a8 |
| 20-Apr-2021 |
Nikita Popov |
Remove unnecessary php.h includes from Zend/ The Zend/ directory really shouldn't be including php headers. These particular includes are plain unnecessary. |
Revision tags: php-7.3.26, php-7.3.26RC1, php-7.3.25, php-7.3.25RC1, php-7.3.24, php-7.3.24RC1 |
|
#
5caaf40b |
| 29-Sep-2020 |
George Peter Banyard |
Introduce pseudo-keyword ZEND_FALLTHROUGH And use it instead of comments |
#
2d0e2733 |
| 18-Mar-2021 |
Nikita Popov |
Support prototypes in call graph Even if we don't know the exact method being called, include it in the call graph with the is_prototype flag. In particular, we can still make use of
Support prototypes in call graph Even if we don't know the exact method being called, include it in the call graph with the is_prototype flag. In particular, we can still make use of return types from prototype methods, as PHP 8 makes LSP violations a hard error. Most other places are adjusted to skip calls with !is_prototype. Maybe some of them would be fine, but ignoring them is conservative.
show more ...
|
Revision tags: php-7.3.23, php-7.3.23RC1, php-7.3.22, php-7.3.22RC1, php-7.3.21, php-7.3.21RC1, php-7.3.20, php-7.3.20RC1, php-7.3.19, php-7.4.7RC1, php-7.3.19RC1 |
|
#
47a2e5c7 |
| 18-May-2020 |
Nikita Popov |
Reference dynamic functions through dynamic_defs Currently, dynamically declared functions and closures are inserted into the function table under a runtime definition key, and then late
Reference dynamic functions through dynamic_defs Currently, dynamically declared functions and closures are inserted into the function table under a runtime definition key, and then later possibly renamed. When opcache is not used and a file containing a closure is repeatedly included, this leads to a very large memory leak, as the no longer needed closure declarations will never be freed (https://bugs.php.net/bug.php?id=76982). With this patch, dynamic functions are instead stored in a dynamic_func_defs member on the op_array, which opcodes reference by index. When the parent op_array is destroyed, the dynamic_func_defs it contains are also destroyed (unless they are stilled used elsewhere, e.g. because they have been bound, or are used by a live closure). This resolves the fundamental part of the leak, though doesn't completely fix it yet due to some arena allocations. The main non-obvious change here is to static variable handling: We can't destroy static_variables_ptr in destroy_op_array, as e.g. that would clear the static variables in a dynamic function when the op_array containing it is destroyed. Static variable destruction is separated out for this reason (we already do static variable destruction separately for normal functions, so we only need to handle main scripts). Closes GH-5595.
show more ...
|
#
83be073a |
| 26-Jan-2021 |
Nikita Popov |
Move optimizer into core This only moves the files, adjusts the build system, exports APIs and does minor fixups to make sure the code builds. This does not yet try to make the
Move optimizer into core This only moves the files, adjusts the build system, exports APIs and does minor fixups to make sure the code builds. This does not yet try to make the optimizer usable independently of opcache. Closes GH-6642.
show more ...
|