#
87559763 |
| 16-Aug-2021 |
Nikita Popov |
Fix arginfo/zpp consistency check for call_user_func from strict_types scope This was using the wrong strict_types information. In this case the call is performed with strict_types=0.
|
#
b5746a4c |
| 29-Jul-2021 |
Nikita Popov |
Drop HAS_UNLINKED_USES flag Instead always use the unlinked_uses table, which is already used if opcache is used. Not much point in having a different mechanism for the non-opcache c
Drop HAS_UNLINKED_USES flag Instead always use the unlinked_uses table, which is already used if opcache is used. Not much point in having a different mechanism for the non-opcache case.
show more ...
|
#
89d01154 |
| 23-Jul-2021 |
Nikita Popov |
Remove zend_cleanup_internal_classes() If fast_shutdown is used, then we don't need to destroy static members at all. If fast_shutdown is not used, then we already loop over classes
Remove zend_cleanup_internal_classes() If fast_shutdown is used, then we don't need to destroy static members at all. If fast_shutdown is not used, then we already loop over classes to destroy static members and static variables in methods.
show more ...
|
#
ae8647d9 |
| 20-Jul-2021 |
Levi Morrison |
Remove leading underscore for _zend_hash_find_known_hash (#7260) Convert zend_hash_find_ex(..., 1) to zend_hash_find_known_hash(...) Convert zend_hash_find_ex(..., 0) to zend_hash_find(.
Remove leading underscore for _zend_hash_find_known_hash (#7260) Convert zend_hash_find_ex(..., 1) to zend_hash_find_known_hash(...) Convert zend_hash_find_ex(..., 0) to zend_hash_find(...) Also add serializable changes to UPGRADING.INTERNALS summary
show more ...
|
#
ee65e920 |
| 13-Jul-2021 |
Nikita Popov |
Check internal function type consistency in zend_call_function We do this for calls in the engine, but not those going through zend_call_function().
|
#
aff36587 |
| 29-Jun-2021 |
Patrick Allaert |
Fixed some spaces used instead of tabs
|
#
a65989b1 |
| 05-Jun-2021 |
Martin Schröder <53789145+kooldev@users.noreply.github.com> |
Alternative Fiber Internals Refactoring (#7101)
|
#
100a1e8e |
| 28-May-2021 |
Nikita Popov |
Convert exception during inheritance to fatal error Now that inheritance can throw deprecations again, these may be converted to exception by a custom error handler. In this case we
Convert exception during inheritance to fatal error Now that inheritance can throw deprecations again, these may be converted to exception by a custom error handler. In this case we need to convert the exception to a fatal error, as inheritance cannot safely throw in the general case.
show more ...
|
#
dd86987b |
| 29-Apr-2021 |
Nikita Popov |
Replay warnings during inheritance (#6928) Since 3e6b447979a2b1f351faf40bee9c6cf7e362d85a it is again possible to have warnings (deprecations) during inheritance, and more such functiona
Replay warnings during inheritance (#6928) Since 3e6b447979a2b1f351faf40bee9c6cf7e362d85a it is again possible to have warnings (deprecations) during inheritance, and more such functionality is likely in the future. This is a problem, because such warnings will only be shown on the first request if the opcache inheritance cache is used. This currently causes test failures in --repeat builds. Fix this by uplifting the error recording functionality from opcache to Zend, and then using it to persist a warning trace in the inheritance cache, which can then be used to replay the warnings on subsequent executions.
show more ...
|
#
c276c16b |
| 26-Apr-2021 |
Aaron Piotrowski |
Implement Fibers RFC: https://wiki.php.net/rfc/fibers Closes GH-6875.
|
#
0fdf668d |
| 15-Apr-2021 |
Dmitry Stogov |
Keep fci->object unchanged
|
#
ca49e536 |
| 15-Apr-2021 |
Dmitry Stogov |
Stop inserting fake frames on VM stack. Now similar "fake" frames now materialized when fetching debug backtraces. The patch also fixes few incorrect backtraces for generators in *.p
Stop inserting fake frames on VM stack. Now similar "fake" frames now materialized when fetching debug backtraces. The patch also fixes few incorrect backtraces for generators in *.phpt tests.
show more ...
|
#
d8e4fbae |
| 08-Apr-2021 |
Dmitry Stogov |
Fast Class Cache This is generalization of idea, that was previously usesd for caching resolution of class_entries in zend_type. Now very similar mechanizm is used for general zend_s
Fast Class Cache This is generalization of idea, that was previously usesd for caching resolution of class_entries in zend_type. Now very similar mechanizm is used for general zend_string into zend_class_entry resolution. Interned zend_string with IS_STR_CLASS_NAME_MAP_PTR GC_FLAG uses its refcount to adress corresponding zend_class_entry cache slot. The refcount keeps an offset to this slot from CG(map_ptr_base). Flag may be checked by ZSTR_HAS_CE_CACHE(str), cache slot may be read by ZSTR_GET_CE_CACHE(str) and set by ZSTR_SET_CE_CACHE(str, ce).
show more ...
|
#
4df39f4b |
| 18-Mar-2021 |
Nikita Popov |
Don't imply SILENT from NO_AUTOLOAD We have separate flags for non-autoloading class fetches and silent class fetches. There's no reason why NO_AUTOLOAD should be special-cased to be
Don't imply SILENT from NO_AUTOLOAD We have separate flags for non-autoloading class fetches and silent class fetches. There's no reason why NO_AUTOLOAD should be special-cased to be implicitly silent.
show more ...
|
#
234af00b |
| 18-Mar-2021 |
Nikita Popov |
Destroy constant values before object store Now that constants can contain objects (currently only enums), we should destroy them before we free the object store, otherwise there wil
Destroy constant values before object store Now that constants can contain objects (currently only enums), we should destroy them before we free the object store, otherwise there will be false positive leak reports. This doesn't affect the fast_shutdown sequence.
show more ...
|
#
c732ab40 |
| 16-Mar-2021 |
Dmitry Stogov |
Change Zend Stream API to use zend_string* instead of char*. This allows to eliminate re-calculation of string lenght and hash value. See the detailed list of changes in UPGRADING.INTERN
Change Zend Stream API to use zend_string* instead of char*. This allows to eliminate re-calculation of string lenght and hash value. See the detailed list of changes in UPGRADING.INTERNALS.
show more ...
|
#
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 ...
|
#
5d160e30 |
| 17-Feb-2021 |
Nikita Popov |
Fix static variable behavior with inheritance When a method is inherited, the static variables will now always use the initial values, rather than the values at the time of inheritan
Fix static variable behavior with inheritance When a method is inherited, the static variables will now always use the initial values, rather than the values at the time of inheritance. As such, behavior no longer depends on whether inheritance happens before or after a method has been called. This is implemented by always keeping static_variables as the original values, and static_variables_ptr as the modified copy. Closes GH-6705.
show more ...
|
#
4b79dba9 |
| 09-Feb-2021 |
Dmitry Stogov |
Added Inheritance Cache. This is a new transparent technology that eliminates overhead of PHP class inheritance. PHP classes are compiled and cached (by opcahce) separately, howeve
Added Inheritance Cache. This is a new transparent technology that eliminates overhead of PHP class inheritance. PHP classes are compiled and cached (by opcahce) separately, however their "linking" was done at run-time - on each request. The process of "linking" may involve a number of compatibility checks and borrowing methods/properties/constants form parent and traits. This takes significant time, but the result is the same on each request. Inheritance Cache performs "linking" for unique set of all the depending classes (parent, interfaces, traits, property types, method types involved into compatibility checks) once and stores result in opcache shared memory. As a part of the this patch, I removed limitations for immutable classes (unresolved constants, typed properties and covariant type checks). So now all classes stored in opcache are "immutable". They may be lazily loaded into process memory, if necessary, but this usually occurs just once (on first linking). The patch shows 8% improvement on Symphony "Hello World" app.
show more ...
|
#
3e01f5af |
| 15-Jan-2021 |
Nikita Popov |
Replace zend_bool uses with bool We're starting to see a mix between uses of zend_bool and bool. Replace all usages with the standard bool type everywhere. Of course, zend_bool
Replace zend_bool uses with bool We're starting to see a mix between uses of zend_bool and bool. Replace all usages with the standard bool type everywhere. Of course, zend_bool is retained as an alias.
show more ...
|
#
54248b18 |
| 10-Dec-2020 |
Calvin Buckley |
IBM i PASE doesn't support ITIMER_PROF Like Cygwin, this platform needs to use a real-time timer. This was based on a patch by @kadler, but it didn't handle unsetting the timer,
IBM i PASE doesn't support ITIMER_PROF Like Cygwin, this platform needs to use a real-time timer. This was based on a patch by @kadler, but it didn't handle unsetting the timer, so the timeout would continue to be active, triggering `hard_timeout` unexpectedly. The patch is fixed to handle unsetting. Closes GH-6503.
show more ...
|
#
904c1b65 |
| 30-Oct-2020 |
Nikita Popov |
FIxed bug #80299 The must_wrap was leaking across iterations.
|
#
6188b7a1 |
| 09-Oct-2020 |
Nikita Popov |
Revert "Change calling convention of zval_update_constant[_ex]() to fastcall." This reverts commit 5a447b086bba450d61c283adfecbdec657cc5f34. Revert this ABI break from PHP-8.0, leav
Revert "Change calling convention of zval_update_constant[_ex]() to fastcall." This reverts commit 5a447b086bba450d61c283adfecbdec657cc5f34. Revert this ABI break from PHP-8.0, leaving it only on master.
show more ...
|
#
5a447b08 |
| 07-Oct-2020 |
Dmitry Stogov |
Change calling convention of zval_update_constant[_ex]() to fastcall.
|
#
d5d31ea3 |
| 18-Sep-2020 |
Dmitry Stogov |
Cleanup observer API and add JIT support
|