#
19809a52 |
| 13-Nov-2024 |
Dmitry Stogov |
Fix incorrect handling of ZEND_ACC_FINAL flag in JIT (#16778)
|
#
bf786d0d |
| 15-Oct-2024 |
Dmitry Stogov |
Fix GH-16393: Assertion failure in ext/opcache/jit/zend_jit.c:2897
|
#
0ef2a226 |
| 09-Oct-2024 |
Dmitry Stogov |
Fix JIT support for static properties of self and parent
|
#
82f70dba |
| 03-Oct-2024 |
Arnaud Le Blanc |
Use original op_array when JIT compiling a Closure zend_jit() assumes that Closure op_arrays have no scope, but this is not true when using the hot counters, first exec, or trace trigger
Use original op_array when JIT compiling a Closure zend_jit() assumes that Closure op_arrays have no scope, but this is not true when using the hot counters, first exec, or trace triggers as they use the executed op_array, which is in case of Closures is a copy, with a scope. In the tracing JIT this problem is avoided as we fetch the original op_array when compiling a Closure. Here I replicate this for the hot counters and first exec triggers. Fixes GH-16186 Closes GH-16200
show more ...
|
#
33b4bdc4 |
| 07-Oct-2024 |
Dmitry Stogov |
JIT for INIT_STATIC_METHOD_CALL (#16206) * JIT for INIT_STATIC_METHOD_CALL * Fixed typo * Fix missing LOAD * Separate zend_get_known_class()
|
#
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 ...
|
#
654b787e |
| 24-Sep-2024 |
Bob Weinand |
Add API to exempt function from being traced in JIT (#15559) Internally accessible via zend_jit_blacklist_function / externally via opcache_jit_blacklist. The functionality currently onl
Add API to exempt function from being traced in JIT (#15559) Internally accessible via zend_jit_blacklist_function / externally via opcache_jit_blacklist. The functionality currently only affects tracing JIT, but may be extended to other JIT modes in future.
show more ...
|
#
23db8953 |
| 09-Sep-2024 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Fix merge into master
|
#
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 ...
|
#
f0f1724f |
| 27-Aug-2024 |
Dmitry Stogov |
Remove unintended ZEND_EXT_API usage (#15602)
|
#
a79c70f5 |
| 14-Aug-2024 |
Gina Peter Banyard |
[RFC] Convert exit (and die) from language constructs to functions (#13483) RFC: https://wiki.php.net/rfc/exit-as-function
|
#
780a8280 |
| 14-Jul-2024 |
Ilija Tovilo |
[RFC] Property hooks (#13455) RFC: https://wiki.php.net/rfc/property-hooks Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
|
#
84a0da15 |
| 09-Jun-2024 |
Peter Kokot |
Sync #if/ifdef/defined (#14508) This syncs CPP macro conditions: - _WIN32 - _WIN64 - HAVE_ALLOCA_H - HAVE_ALPHASORT - HAVE_ARPA_INET_H - HAVE_CONFIG_H - HAVE_DIRE
Sync #if/ifdef/defined (#14508) This syncs CPP macro conditions: - _WIN32 - _WIN64 - HAVE_ALLOCA_H - HAVE_ALPHASORT - HAVE_ARPA_INET_H - HAVE_CONFIG_H - HAVE_DIRENT_H - HAVE_DLFCN_H - HAVE_GETTIMEOFDAY - HAVE_LIBDL - HAVE_POLL_H - HAVE_PWD_H - HAVE_SCANDIR - HAVE_SYS_FILE_H - HAVE_SYS_PARAM_H - HAVE_SYS_SOCKET_H - HAVE_SYS_TIME_H - HAVE_SYS_TYPES_H - HAVE_SYS_WAIT_H - HAVE_UNISTD_H - PHP_WIN32 - ZEND_WIN32 These are either undefined or defined to 1 in Autotools and Windows. Follow up of GH-5526 (-Wundef).
show more ...
|
#
58c281a6 |
| 23-May-2024 |
Dmitry Stogov |
JIT: Add CPU registers support for ASSIGN_OBJ and ASSIGN_OBJ_OP (#14303) * JIT: Add CPU registers support for ASSIGN_OBJ and ASSIGN_OBJ_OP * Fix tests failures * Fix tests
JIT: Add CPU registers support for ASSIGN_OBJ and ASSIGN_OBJ_OP (#14303) * JIT: Add CPU registers support for ASSIGN_OBJ and ASSIGN_OBJ_OP * Fix tests failures * Fix tests failures * Add missing GUARD
show more ...
|
#
13d5c812 |
| 19-May-2024 |
Dmitry Stogov |
JIT: Add CPU registers support for FETCH_OBJ_R (#14253)
|
#
600d591c |
| 08-May-2024 |
Ilija Tovilo |
Omit FETCH_THIS in closures Non-static closures are guaranteed to have $this. The existing comment highlights this, but fails to handle it correctly. Closes GH-14181
|
#
5ef1824e |
| 15-May-2024 |
Dmitry Stogov |
JIT: Improve x86_64 code generated for PHP Array Bounds Checks (#14246)
|
#
446ff6a7 |
| 14-May-2024 |
Dmitry Stogov |
JIT: Implement CPU register usage for ASSIGN_DIM_OP (#14236)
|
#
4a91c8a1 |
| 14-May-2024 |
Dmitry Stogov |
JIT: Implement CPU register usage for ASSIGN_OP (#14235)
|
#
c8920aaf |
| 14-May-2024 |
Dmitry Stogov |
JIT: JIT: Implement CPU register usage for ISSET_ISEMPTY_DIM (#14227)
|
#
64f4aca6 |
| 14-May-2024 |
Dmitry Stogov |
IT: Implement CPU register usage for FETCH_DIM_W (#14225)
|
#
bf7d4d7e |
| 14-May-2024 |
Dmitry Stogov |
JIT: Implement CPU register usage for ASSIGN_DIM (#14224)
|
#
89305574 |
| 13-May-2024 |
Dmitry Stogov |
JIT: Improve CPU register usage in FETCH_DIM_R, FETCH_DIM_IS and FETCH_LIST_R (#14222)
|
#
00c6d538 |
| 01-Apr-2024 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Fix GH-13834: Applying non-zero offset 36 to null pointer in zend_jit.c (#13846) * Fix GH-13834: Applying non-zero offset 36 to null pointer in zend_jit.c ssa_op can be NULL in func
Fix GH-13834: Applying non-zero offset 36 to null pointer in zend_jit.c (#13846) * Fix GH-13834: Applying non-zero offset 36 to null pointer in zend_jit.c ssa_op can be NULL in function JIT. Doing pointer arithmetic on a NULL pointer is undefined behaviour. Undefined behaviour can be dangerous because the optimizer may assume then that the variable is not actually NULL. To solve this: 1. Add ADVANCE_SSA_OP() to safely add an offset to ssa_op in zend_jit.c 2. For inference, add an extra offset argument to the helper functions. To reproduce this, use Clang (not GCC) on a test like sapi/cli/tests/gh12363.phpt (or other tests also work). * Remove -fno-sanitize=pointer-overflow flag from CI * Fix NULL pointer offsets added to the stack_map * Fix an offset add on a potentially NULL ssa->ops * Fix NULL pointer arithmetic in zend_range_info() * Address review comments
show more ...
|
#
631bc816 |
| 06-Feb-2024 |
Ilija Tovilo |
Implement stackless internal function calls Co-authored-by: Dmitry Stogov <dmitry@zend.com> Closes GH-12461
|