#
6f7f32c3 |
| 03-Oct-2024 |
Christoph M. Becker |
Declare zend_call_stack_size_error() as ZEND_API This is necessary at least on Windows to be able to actually call the function from a different module (in this case php8phpdbg.dll could
Declare zend_call_stack_size_error() as ZEND_API This is necessary at least on Windows to be able to actually call the function from a different module (in this case php8phpdbg.dll could not be build). Closes GH-16204.
show more ...
|
#
443aa29d |
| 25-Sep-2024 |
Arnaud Le Blanc |
Support stack limit in phpdbg SAPI Fixes GH-16041 Closes GH-16055
|
#
3f913c12 |
| 02-Oct-2024 |
Dmitry Stogov |
Implement JIT for ZEND_FETCH_STATIC_PROP_* and improve interpretation (#16157) * Implement JIT for ZEND_FETCH_STATIC_PROP_* and improve interpretation * Revert incorrect change
Implement JIT for ZEND_FETCH_STATIC_PROP_* and improve interpretation (#16157) * Implement JIT for ZEND_FETCH_STATIC_PROP_* and improve interpretation * Revert incorrect change * Use FASTCALL calling convention * Use EMPTY_SWITCH_DEFAULT_CASE * Move the loading of the property info into zend_jit_uninit_static_prop()
show more ...
|
#
6435bb5a |
| 04-Sep-2024 |
Levi Morrison |
Interrupt while internal frame is on the stack (#14627) * Check VM interrupt while internal frame is on top * Use tab instead of spaces * fix frame used in interrupt and re
Interrupt while internal frame is on the stack (#14627) * Check VM interrupt while internal frame is on top * Use tab instead of spaces * fix frame used in interrupt and refactor * remove unused failures for zend_jit_check_timeout * Fix JIT support Co-authored-by: Bob Weinand <bobwei9@hotmail.com> * Fix the missing store to vm_interrupt * Rename new functions * Special case zend_interrupt_function in JIT code * refactor to use ZEND_VM_SET_OPCODE_NO_INTERRUPT * Split atomic exchange into load + store It is difficult to determine performance of atomics sometimes. In this case, the separate load+store is still correct, and a load does not cause a modification, and might be faster for some platforms than an exchange. A load+store is slower than an exchange, but we're fine trading the penalty to the slow path and keeping the happy path faster. --------- Co-authored-by: Bob Weinand <bobwei9@hotmail.com>
show more ...
|
#
8df557ac |
| 27-Aug-2024 |
Ilija Tovilo |
[RFC] Asymmetric visibility v2 (GH-15063) Co-authored-by: Larry Garfield <larry@garfieldtech.com>
|
#
a26ec58f |
| 16-Jul-2024 |
Ilija Tovilo |
De-duplicate readonly property modification error message (#14972)
|
#
72c87469 |
| 02-Jul-2024 |
Benjamin Eberlei |
RFC: Add `#[\Deprecated]` Attribute (#11293) see https://wiki.php.net/rfc/deprecated_attribute Co-authored-by: Tim Düsterhus <tim@tideways-gmbh.com> Co-authored-by: Ilija Tovilo
RFC: Add `#[\Deprecated]` Attribute (#11293) see https://wiki.php.net/rfc/deprecated_attribute Co-authored-by: Tim Düsterhus <tim@tideways-gmbh.com> Co-authored-by: Ilija Tovilo <ilija.tovilo@me.com>
show more ...
|
#
6a2c5318 |
| 15-Jun-2024 |
Bob Weinand |
Optimize observers (#13649) Inline the lookup whether a function is observed at all. This strategy is also used for FRAMELESS calls. If the frameless call is observed, we instead allocat
Optimize observers (#13649) Inline the lookup whether a function is observed at all. This strategy is also used for FRAMELESS calls. If the frameless call is observed, we instead allocate a call frame and push the arguments, to call the the function afterwards. Doing so is still a performance benefit as opposed to executing individual INIT_FCALL+SEND_VAL ops. Thus, even if the frameless call turns out to be observed, the call overhead is slightly lower than before. If the internal function is not observed at all, the unavoidable overhead is fetching the FLF zend_function pointer and the run-time cache needs to be inspected. As part of this work, it turned out to be most viable to put the result operand on the ZEND_OP_DATA instead of ZEND_FRAMELESS_ICALL_3, allowing seamless interoperability with the DO_ICALL opcode. This is a bit unusual in comparison to all other ZEND_OP_DATA usages, but seems to not pose problems overall. There is also a small issue resolved: trampolines would always use the ZEND_CALL_TRAMPOLINE_SPEC_OBSERVER function due to zend_observer_fcall_op_array_extension being set to -1 too late.
show more ...
|
#
631bc816 |
| 06-Feb-2024 |
Ilija Tovilo |
Implement stackless internal function calls Co-authored-by: Dmitry Stogov <dmitry@zend.com> Closes GH-12461
|
#
73c5f36f |
| 03-Aug-2023 |
Ilija Tovilo |
Assert ptr_ptr value of TMP|CONST isn't used (#11865) We require valid code for compilation to succeed, but these paths should always be guarded by OPx_TYPE checks and never execute. Add
Assert ptr_ptr value of TMP|CONST isn't used (#11865) We require valid code for compilation to succeed, but these paths should always be guarded by OPx_TYPE checks and never execute. Add an assertion to verify.
show more ...
|
#
f5c54fd8 |
| 23-May-2023 |
Ilija Tovilo |
Fix access on NULL pointer in array_merge_recursive() Closes GH-11303
|
#
6f63d4b2 |
| 19-Apr-2023 |
Ilija Tovilo |
Fix -Wenum-int-mismatch warnings on gcc 13 Closes GH-11103
|
#
414f71a9 |
| 16-Apr-2023 |
Máté Kocsis |
Typed class constants (#10444) RFC: https://wiki.php.net/rfc/typed_class_constants Co-Authored-By: Ben <7127204+moliata@users.noreply.github.com> Co-Authored-By: Bob Weinand <31
Typed class constants (#10444) RFC: https://wiki.php.net/rfc/typed_class_constants Co-Authored-By: Ben <7127204+moliata@users.noreply.github.com> Co-Authored-By: Bob Weinand <3154871+bwoebi@users.noreply.github.com> Co-Authored-By: Ilija Tovilo <ilija.tovilo@me.com>
show more ...
|
#
0e706937 |
| 04-Apr-2023 |
Dmitry Stogov |
Revert "Zend/zend_types.h: move `IS_*` to `zend_type_code.h`" This reverts commit 0270a1e54c0285fa3c89ee2b0120073ef57ab5fa.
|
#
fdbea4f3 |
| 03-Mar-2023 |
Ilija Tovilo |
Add GC_DTOR/GC_DTOR_NO_REF macros
|
#
b39107c7 |
| 16-Feb-2023 |
Ilija Tovilo |
Delay destructor for zend_assign_to_typed_ref
|
#
915b2837 |
| 16-Feb-2023 |
Dmitry Stogov |
Delay freeing of overwritten values in assignments Fixes GH-10168
|
#
bf123da5 |
| 04-Apr-2023 |
Tony Su |
[Zend]: Fix unnecessary alignment in ZEND_CALL_FRAME_SLOT macro (#10988) Alignment is not necessary while calculating slots reserved for zend_execute_data and _zend_vm_stack. ZE
[Zend]: Fix unnecessary alignment in ZEND_CALL_FRAME_SLOT macro (#10988) Alignment is not necessary while calculating slots reserved for zend_execute_data and _zend_vm_stack. ZEND_STATIC_ASSERT ensures the correct alignment while code compilation. Credit is to Ilija Tovilo. PR: https://github.com/php/php-src/pull/10988 Signed-off-by: Tony Su <tao.su@intel.com> Reviewed-by : Ilija Tovilo Reviewed-by : Dmitry Stogov Reviewed-by : Niels Dossche
show more ...
|
#
3bcf2c37 |
| 28-Feb-2023 |
Máté Kocsis |
Allow readonly properties to be reinitialized once during cloning (#10389) RFC: https://wiki.php.net/rfc/readonly_amendments
|
#
0270a1e5 |
| 21-Feb-2023 |
Max Kellermann |
Zend/zend_types.h: move `IS_*` to `zend_type_code.h` More decoupling of circular header dependencies.
|
#
d5c649b3 |
| 23-Feb-2023 |
Max Kellermann |
zend_compiler, ...: use `uint8_t` instead of `zend_uchar` (#10621) `zend_uchar` suggests that the value is an ASCII character, but here, it's about very small integers. This is misleadi
zend_compiler, ...: use `uint8_t` instead of `zend_uchar` (#10621) `zend_uchar` suggests that the value is an ASCII character, but here, it's about very small integers. This is misleading, so let's use a C99 integer instead. On all architectures currently supported by PHP, `zend_uchar` and `uint8_t` are identical. This change is only about code readability.
show more ...
|
#
7b68ff46 |
| 16-Feb-2023 |
Ilija Tovilo |
Revert "Fix GH-10168: heap-buffer-overflow at zval_undefined_cv" This reverts commit 71ddede5655fe654002ae18af6a18e033f717287.
|
#
d721dcc2 |
| 10-Feb-2023 |
Arnaud Le Blanc |
Fix colletion of unfinished function call in fibers Fixes GH-10496. Co-authored-by: Bob Weinand <bobwei9@hotmail.com>
|
#
71ddede5 |
| 06-Feb-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Fix GH-10168: heap-buffer-overflow at zval_undefined_cv The problem is that we're using the variable_ptr in the opcode handler *after* it has already been destroyed. The solution is to c
Fix GH-10168: heap-buffer-overflow at zval_undefined_cv The problem is that we're using the variable_ptr in the opcode handler *after* it has already been destroyed. The solution is to create a specialised version of zend_assign_to_variable which takes in two destination zval pointers. Closes GH-10524
show more ...
|
#
47ed1904 |
| 28-Dec-2022 |
Ilija Tovilo |
Fix use-after-free in write_property when object is released Fixes GH-10169 Closes GH-10179
|