#
8720063c |
| 21-Oct-2024 |
Ilija Tovilo |
Fix propagation of ZEND_ACC_RETURN_REFERENCE for call trampoline Fixes GH-16515 Closes GH-16529
|
#
08b2ab22 |
| 12-Apr-2024 |
Tim Düsterhus |
Include the source location in Closure names (#13550) * Include the source location in Closure names This change makes stack traces involving Closures, especially multiple diffe
Include the source location in Closure names (#13550) * Include the source location in Closure names This change makes stack traces involving Closures, especially multiple different Closures, much more useful, because it's more easily visible *which* closure was called for a given stack frame. The implementation is similar to that of anonymous classes which already include the file name and line number within their generated classname. * Update scripts/dev/bless_tests.php for closure naming * Adjust existing tests for closure naming * Adjust tests for closure naming that were not caught locally * Drop the namespace from closure names This is redundant with the included filename. * Include filename and line number as separate keys in Closure debug info * Fix test * Fix test * Include the surrounding class and function name in closure names * Fix test * Relax test expecations * Fix tests after merge * NEWS / UPGRADING
show more ...
|
#
700fbca5 |
| 08-Mar-2024 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Change getThis() into ZEND_THIS where possible (#13641)
|
#
f2e199e8 |
| 25-Feb-2024 |
Máté Kocsis |
Implement "support doc comments for internal classes and functions" (#13266) Fixes #13130
|
#
8fb51d4f |
| 25-Sep-2023 |
Levi Morrison |
Set func pointer to null in Closure __invoke (#12275)
|
#
af2110e6 |
| 29-Aug-2023 |
Ilija Tovilo |
Fix freeing of incompletely initialized closures Addref to relevant fields before allocating any memory. Also only set/remove the ZEND_ACC_HEAP_RT_CACHE flag after allocating memory.
Fix freeing of incompletely initialized closures Addref to relevant fields before allocating any memory. Also only set/remove the ZEND_ACC_HEAP_RT_CACHE flag after allocating memory. Fixes GH-12073 Closes GH-12074
show more ...
|
#
5c789806 |
| 09-Jun-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Fix GH-11406: segfault with unpacking and magic method closure The magic method trampoline closure may be variadic. However, the arg_info for the variadic argument was not set, resulting
Fix GH-11406: segfault with unpacking and magic method closure The magic method trampoline closure may be variadic. However, the arg_info for the variadic argument was not set, resulting in a crash both in reflection and in the VM. Fix it by creating an arg_info containing a single element in case of the variadic case. The variadic argument is the last one (and in this case only one) in the arg_info array. We make sure the argument info is equivalent to the argument info of `$closure` of the following code snippet: ``` function foo(...$arguments) {} $closure = foo(...); ``` Closes GH-11417.
show more ...
|
#
61e1f8aa |
| 03-Jun-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Let closure created from magic method accept named parameters Implements GH-11348. Closes GH-11364.
|
#
9ce6980b |
| 05-Jun-2023 |
George Peter Banyard |
Use known zend_string pointer to check for equality instead of C strings (#11370) * Compare __invoke magic method name with known zend_string pointer * Compare __sleep/__wakeup magi
Use known zend_string pointer to check for equality instead of C strings (#11370) * Compare __invoke magic method name with known zend_string pointer * Compare __sleep/__wakeup magic method name with known zend_string pointer
show more ...
|
Revision tags: php-8.2.0RC1, php-8.1.10, php-8.0.23, php-8.0.23RC1, php-8.1.10RC1, php-8.2.0beta3 |
|
#
0b1d750d |
| 11-Aug-2022 |
Ilija Tovilo |
Allow arbitrary expressions in static variable initializer Closes GH-9301
|
#
bf1cfc07 |
| 16-Jan-2023 |
Christoph M. Becker |
Revert GH-10300 Cf. <https://github.com/php/php-src/pull/10220#issuecomment-1383739816>. This reverts commit 68ada76f9a659745f572539b72afa06fa75a866f. his reverts commit 45384c6
Revert GH-10300 Cf. <https://github.com/php/php-src/pull/10220#issuecomment-1383739816>. This reverts commit 68ada76f9a659745f572539b72afa06fa75a866f. his reverts commit 45384c6e201eda9963e2fcc18946a9446230a2d6. This reverts commit ef7fbfd71025f034b0bfcb413efd181ce798fc1b. This reverts commit 9b9ea0d7c696f2990a159b2a2dafbc04547dc10f. This reverts commit f15747c26be4a2330dc0cf3ea442f53f30f84cac. This reverts commit e883ba93c40827fafd7868517eb48e04569f76ab. This reverts commit 7e87551c3775d26e20b06a4032a00053db6452cc. This reverts commit 921274d2b8966641a00c0a767ae40ba7187bdffc. This reverts commit fc1f528e5e3ee45ab17ae8dcfad6a6422ff2002d. This reverts commit 0961715cdafb5d39124667ff94f3b56453ce71f1. This reverts commit a93f264526e1cdade71d887800c1c448c411bfdc. This reverts commit 72dd94e1c6d29203b8f6473317f626e6d6d6fbdc. This reverts commit 29b2dc89645e741f91cc920964432dccd2aaef14. This reverts commit 05c7653bba7571852f5ce6fc0d220a1a829bc4c0. This reverts commit 5190e5c260ee05e3f3c3d1168263a1a6637441d0. This reverts commit 6b55bf228cb2da8705737d414f394950a92d8aae. This reverts commit 184b4a12d3215d105720d005b31e365249e2eb21. This reverts commit 4c31b7888a561e920fd3889ba8d99368f3c2d9e6. This reverts commit d44e9680f080b4918cfed268b96f90ea35975617. This reverts commit 4069a5c43f419d76e1254c8e49b4cad9968a408f.
show more ...
|
#
68ada76f |
| 05-Jan-2023 |
Max Kellermann |
Zend/zend_closures: include cleanup
|
#
45cb3f91 |
| 21-Nov-2022 |
Dmitry Stogov |
Fix a memory leak in tracig JIT when the same closure is called through Closure::call() and natively. Closure::call() makes a temporary copy of original closure function, modifies its sc
Fix a memory leak in tracig JIT when the same closure is called through Closure::call() and natively. Closure::call() makes a temporary copy of original closure function, modifies its scope, resets ZEND_ACC_CLOSURE flag and call it through zend_call_function(). As result the same function may be called with and without ZEND_ACC_CLOSURE flag, that confuses JIT and may lead to memory leak or even worse memory errors. The patch allocates "fake" closure object and keep ZEND_ACC_CLOSURE flag to always behave in the same way.
show more ...
|
#
8e49d7f3 |
| 02-Nov-2022 |
Bob Weinand |
Delay releasing closures until after observer end
|
#
8dabbda8 |
| 24-Oct-2022 |
Florian Sowade |
Don’t reset func in zend_closure_internal_handler The pointer is used in _zend_observe_fcall_begin().
|
#
5a0b68be |
| 14-Sep-2022 |
Bob Weinand |
Revert "Store default object handlers alongside the class entry" This reverts commit 9e6eab3c139b41dc976dd5305fd1a6e387e5e27f. Reverted along a01dd9fedaecd2e5b95bc5c2e8d6542116addea
Revert "Store default object handlers alongside the class entry" This reverts commit 9e6eab3c139b41dc976dd5305fd1a6e387e5e27f. Reverted along a01dd9fedaecd2e5b95bc5c2e8d6542116addeae.
show more ...
|
Revision tags: php-8.2.0beta2, php-8.1.9, php-8.0.22 |
|
#
9e6eab3c |
| 22-Jul-2022 |
Bob Weinand |
Store default object handlers alongside the class entry Object handlers being separate from class entries is a legacy inherited from PHP 5. Today it has little benefit to keep them separate:
Store default object handlers alongside the class entry Object handlers being separate from class entries is a legacy inherited from PHP 5. Today it has little benefit to keep them separate: in fact, accessing object handlers usually requires not-so-safe hacks. While it is possible to swap handlers in a custom installed create_object handler, this mostly is tedious, as well as it requires allocating the object handlers struct at runtime, possibly caching it etc.. This allows extensions, which intend to observe other classes to install their own class handlers. The life cycle of internal classes may now be simply observed by swapping the class handlers in post_startup stage. The life cycle of userland classes may be observed by iterating over the new classes in zend_compile_file and zend_compile_string and then swapping their handlers. In general, this would also be a first step in directly tying the object handlers to classes. Especially given that I am not aware of any case where the object handlers would be different between various instances of a given class. Signed-off-by: Bob Weinand <bobwei9@hotmail.com>
show more ...
|
#
1f6baa77 |
| 12-Aug-2022 |
Ilija Tovilo |
Show function name when dumping fake closure (#9306) Fixes GH-8962
|
#
b576bb90 |
| 21-Jul-2022 |
Bob Weinand |
Avoid using a stack allocated zend_function in Closure::call, to avoid prevent crashes on bailout Having a stack allocated zend_function may cause crashes if the stack is polluted between ba
Avoid using a stack allocated zend_function in Closure::call, to avoid prevent crashes on bailout Having a stack allocated zend_function may cause crashes if the stack is polluted between bailout and the actual unwinding in zend_observer_fcall_end_all. Signed-off-by: Bob Weinand <bobwei9@hotmail.com>
show more ...
|
Revision tags: php-8.1.9RC1, php-8.2.0beta1, php-8.0.22RC1, php-8.0.21, php-8.1.8, php-8.2.0alpha3 |
|
#
3b92a966 |
| 25-Jun-2022 |
Ilija Tovilo |
Convert return type of various object handlers from int to zend_result (#8755)
|
Revision tags: php-8.1.8RC1, php-8.2.0alpha2, php-8.0.21RC1, php-8.0.20, php-8.1.7, php-8.2.0alpha1, php-7.4.30, php-8.1.7RC1, php-8.0.20RC1, php-8.1.6, php-8.0.19, php-8.1.6RC1, php-8.0.19RC1, php-8.0.18, php-8.1.5, php-7.4.29, php-8.1.5RC1, php-8.0.18RC1, php-8.1.4, php-8.0.17, php-8.1.4RC1, php-8.0.17RC1 |
|
#
19063a84 |
| 17-Feb-2022 |
Ilija Tovilo |
Fix null static_variable_ptr for uncalled fake closures Closes GH-8083 Closes GH-8109
|
Revision tags: php-8.1.3, php-8.0.16, php-7.4.28 |
|
#
73fed0f0 |
| 11-Feb-2022 |
Dmitry Stogov |
Fix emory leak Fixes oss-fuzz #44408
|
Revision tags: php-8.1.3RC1, php-8.0.16RC1, php-8.1.2, php-8.0.15, php-8.1.2RC1, php-8.0.15RC1, php-8.0.14, php-8.1.1, php-7.4.27, php-8.1.1RC1, php-8.0.14RC1, php-7.4.27RC1, php-8.1.0, php-8.0.13, php-7.4.26 |
|
#
d26965b2 |
| 16-Nov-2021 |
Nikita Popov |
Fixed bug #81626 Backport of a8926474cb2c68cde2a7c0d19bcd95cdbda55ad2 to 7.4.
|
Revision tags: php-7.3.33, php-8.1.0RC6 |
|
#
90b7bde6 |
| 03-Nov-2021 |
Dmitry Stogov |
Use more compact representation for packed arrays. - for packed arrays we store just an array of zvals without keys. - the elements of packed array are accessible throuf as ht->arPacked[
Use more compact representation for packed arrays. - for packed arrays we store just an array of zvals without keys. - the elements of packed array are accessible throuf as ht->arPacked[i] instead of ht->arData[i] - in addition to general ZEND_HASH_FOREACH_* macros, we introduced similar familied for packed (ZEND_HASH_PACKED_FORECH_*) and real hashes (ZEND_HASH_MAP_FOREACH_*) - introduced an additional family of macros to access elements of array (packed or real hashes) ZEND_ARRAY_ELEMET_SIZE, ZEND_ARRAY_ELEMET_EX, ZEND_ARRAY_ELEMET, ZEND_ARRAY_NEXT_ELEMENT, ZEND_ARRAY_PREV_ELEMENT - zend_hash_minmax() prototype was changed to compare only values Because of smaller data set, this patch may show performance improvement on some apps and benchmarks that use packed arrays. (~1% on PHP-Parser) TODO: - sapi/phpdbg needs special support for packed arrays (WATCH_ON_BUCKET). - zend_hash_sort_ex() may require converting packed arrays to hash.
show more ...
|
Revision tags: php-7.4.26RC1, php-8.0.13RC1, php-8.1.0RC5, php-7.3.32, php-7.4.25, php-8.0.12 |
|
#
04cbd841 |
| 14-Oct-2021 |
Dmitry Stogov |
Always use direct pointer (not map_ptr slot) to access run_time_cache of a closure instance
|