#
683c9884 |
| 07-Oct-2020 |
Nikita Popov |
Fixed bug #80194 We should strip NOPs from unreachable_free blocks as well, to make sure that the free really is the first op.
|
#
8516434a |
| 03-Sep-2020 |
Nikita Popov |
Fixed bug #80046 We already protect against optimizing away loop frees in DFA pass, but not in block pass.
|
Revision tags: php-7.3.13RC1, php-7.2.26RC1, php-7.4.0, php-7.2.25, php-7.3.12, php-7.4.0RC6, php-7.3.12RC1, php-7.2.25RC1, php-7.4.0RC5, php-7.1.33, php-7.2.24, php-7.3.11, php-7.4.0RC4, php-7.3.11RC1, php-7.2.24RC1, php-7.4.0RC3, php-7.2.23, php-7.3.10, php-7.4.0RC2 |
|
#
af9b127f |
| 13-Sep-2019 |
Dmitry Stogov |
Make constant and copy propagation only for IS_TMP_VAR operands
|
Revision tags: php-7.2.23RC1, php-7.3.10RC1, php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4, php-7.2.22RC1, php-7.3.9RC1, php-7.4.0beta2, php-7.1.31, php-7.2.21, php-7.3.8, php-7.4.0beta1 |
|
#
b065fbde |
| 19-Jul-2019 |
Dmitry Stogov |
ZEND_DECLARE_ANON_CLASS doesn't need to skip anything now. It's immediatelly followed by ZEND_NEW.
|
Revision tags: php-7.2.21RC1, php-7.3.8RC1, php-7.4.0alpha3 |
|
#
48ca5a1e |
| 05-Jul-2019 |
Dmitry Stogov |
Replace ZEND_ASSIGN_ADD (and others) by ZEND_ASSIGN_OP, ZEND_ASSIGN_DIM_OP, ZEND_ASSGIN_OBJ_OP and ZEND_ASSIGN_STATIC_PROP_OP
|
Revision tags: php-7.3.7, php-7.2.20, php-7.4.0alpha2, php-7.3.7RC3 |
|
#
ccfe6c86 |
| 20-Jun-2019 |
Nikita Popov |
Avoid memset/memcpy null ub in block pass The arena allocator has no problem with zero-size allocations (and will just return the same pointer for each in this case), so just do that
Avoid memset/memcpy null ub in block pass The arena allocator has no problem with zero-size allocations (and will just return the same pointer for each in this case), so just do that to avoid null pointers.
show more ...
|
Revision tags: php-7.3.7RC2, php-7.2.20RC2, php-7.4.0alpha1, php-7.3.7RC1, php-7.2.20RC1, php-7.2.19, php-7.3.6, php-7.1.30 |
|
#
89b2d886 |
| 24-May-2019 |
Nikita Popov |
Register class before fetching parent We want the class declaration to be available while compiling the parent class.
|
Revision tags: php-7.2.19RC1, php-7.3.6RC1, php-7.1.29, php-7.2.18, php-7.3.5, php-7.2.18RC1, php-7.3.5RC1, php-7.2.17, php-7.3.4, php-7.1.28, php-7.3.4RC1, php-7.2.17RC1, php-7.1.27, php-7.3.3, php-7.2.16, php-7.3.3RC1, php-7.2.16RC1, php-7.2.15, php-7.3.2, php-7.2.15RC1, php-7.3.2RC1, php-5.6.40, php-7.1.26, php-7.3.1, php-7.2.14, php-7.2.14RC1, php-7.3.1RC1, php-5.6.39, php-7.1.25, php-7.2.13, php-7.0.33, php-7.3.0, php-7.1.25RC1, php-7.2.13RC1, php-7.3.0RC6, php-7.1.24, php-7.2.12, php-7.3.0RC5, php-7.1.24RC1, php-7.2.12RC1, php-7.3.0RC4, php-7.1.23, php-7.2.11, php-7.3.0RC3 |
|
#
e829d087 |
| 06-Oct-2018 |
CHU Zhaowei |
Implement spread operator in arrays RFC: https://wiki.php.net/rfc/spread_operator_for_array Closes GH-3640.
|
#
105a04aa |
| 28-Feb-2019 |
Nikita Popov |
Don't remove CONST CAST in CONCAT operand CONCAT assumes that CONST operands are strings, so we cannot blindly remove CAST operands.
|
#
1b998bb9 |
| 28-Feb-2019 |
Nikita Popov |
Remove unnecessary convert_to_string_safe macro I'm assuming that the reason this existed was to avoid modifying an interned string. However, the current code handles this case fine
Remove unnecessary convert_to_string_safe macro I'm assuming that the reason this existed was to avoid modifying an interned string. However, the current code handles this case fine already.
show more ...
|
#
da919a8b |
| 05-Feb-2019 |
Dmitry Stogov |
Remove copyright years.
|
#
a50198d0 |
| 15-Jan-2019 |
Nikita Popov |
Implement ??= operator RFC: https://wiki.php.net/rfc/null_coalesce_equal_operator $a ??= $b is $a ?? ($a = $b), with the difference that $a is only evaluated once, to the degree
Implement ??= operator RFC: https://wiki.php.net/rfc/null_coalesce_equal_operator $a ??= $b is $a ?? ($a = $b), with the difference that $a is only evaluated once, to the degree that this is possible. In particular in $a[foo()] ?? $b function foo() is only ever called once. However, the variable access themselves will be reevaluated.
show more ...
|
#
3269e884 |
| 17-Jan-2019 |
Nikita Popov |
Implement single-pass live range calculation Instead of interleaving creation of live-ranges with the main compiler code, compute them in a separate pass over the opcodes as part of
Implement single-pass live range calculation Instead of interleaving creation of live-ranges with the main compiler code, compute them in a separate pass over the opcodes as part of pass_two. Additionally, do not keep live ranges synchronized during optimization in opcache and instead use the same mechanism to recompute them after optimization.
show more ...
|
#
8c7aa88e |
| 07-Nov-2018 |
Dmitry Stogov |
Fixed crash introduced by bfaf662ac2e58c16208224f32cb8387a35b3da97
|
#
bfaf662a |
| 06-Nov-2018 |
Dmitry Stogov |
Micro-optimization
|
#
9afce019 |
| 01-Nov-2018 |
Zeev Suraski |
Future-proof email addresses
|
#
67e0138c |
| 01-Nov-2018 |
Zeev Suraski |
Future-proof email addresses...
|
Revision tags: php-7.1.23RC1, php-7.2.11RC1, php-7.3.0RC2, php-5.6.38, php-7.1.22, php-7.3.0RC1, php-7.2.10, php-7.0.32, php-7.1.22RC1, php-7.3.0beta3, php-7.2.10RC1, php-7.1.21, php-7.2.9, php-7.3.0beta2, php-7.1.21RC1, php-7.3.0beta1, php-7.2.9RC1 |
|
#
ab8094c6 |
| 26-Jul-2018 |
Dmitry Stogov |
Pack zend_constant.flags and zend_constant.module_number into reserved space inside zend_constant.value.
|
Revision tags: php-5.6.37, php-7.1.20, php-7.3.0alpha4, php-7.0.31, php-7.2.8, php-7.1.20RC1 |
|
#
af341213 |
| 04-Jul-2018 |
Dmitry Stogov |
se zval_ptr_dtor_str() instead of zend_string_release_ex(Z_STR(*), 0)
|
Revision tags: php-7.2.8RC1, php-7.3.0alpha3, php-7.3.0alpha2, php-7.1.19, php-7.2.7, php-7.1.19RC1, php-7.3.0alpha1, php-7.2.7RC1 |
|
#
5eb1f92f |
| 28-May-2018 |
Dmitry Stogov |
Use zend_string_release_ex() instread of zend_string_release() in places, where we sure about string persistence.
|
Revision tags: php-7.1.18, php-7.2.6, php-7.2.6RC1, php-7.1.18RC1 |
|
#
83f98f73 |
| 27-Apr-2018 |
Dmitry Stogov |
Don't store values of PHP_SAPI and PHP_BINARY in file cache, because it may be used by different SAPI.
|
#
279ba58e |
| 27-Apr-2018 |
Nikita Popov |
Fixed bug #76275 * Adjust IS_SERIALIZED() check to account for potential empty allocations at the end of the memory region. * Deallocate empty allocation if all try/catch elements
Fixed bug #76275 * Adjust IS_SERIALIZED() check to account for potential empty allocations at the end of the memory region. * Deallocate empty allocation if all try/catch elements have been removed in the block pass (similar to what we do if all live ranges have been eliminated).
show more ...
|
Revision tags: php-5.6.36, php-7.2.5, php-7.1.17, php-7.0.30, php-7.1.17RC1, php-7.2.5RC1, php-5.6.35, php-7.0.29, php-7.2.4, php-7.1.16, php-7.1.16RC1 |
|
#
52fddfcc |
| 13-Mar-2018 |
Dmitry Stogov |
Avoid useless iterations
|
Revision tags: php-7.2.4RC1, php-7.1.15, php-5.6.34, php-7.2.3, php-7.0.28 |
|
#
b0af9ac7 |
| 16-Feb-2018 |
Nikita Popov |
Avoid live range references in opcodes Don't store the live range of the freed variable for FREE_ON_RETURN frees, instead look it up at runtime. As this is an extremely unlikely code
Avoid live range references in opcodes Don't store the live range of the freed variable for FREE_ON_RETURN frees, instead look it up at runtime. As this is an extremely unlikely codepath (in particular, it requires a loop variable with a throwing destructor), saving the runtime lookup of the live range is not worth the extra complexity this adds everywhere else.
show more ...
|
#
372bf8a9 |
| 16-Feb-2018 |
Nikita Popov |
Fixed bug #75969 Move NOP stripping out of zend_optimize_block: NOP stripping may move instructions, which may invalidate a Tsource shared across an extended basic block.
|