#
f4f6c138 |
| 30-Oct-2024 |
Dmitry Stogov |
Update trace type inference and abstract stack to be consistent with #16339 (JIT support for ASSIGN_DIM[_OP] with IS_VAR op1) (#16651)
|
#
38e1b0ac |
| 24-Oct-2024 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Fix GH-16572: Incorrect result with reflection in low-trigger JIT When a recursive call happens with invalid arguments, the maximum valid arguments are computed and stored in `num_args`,
Fix GH-16572: Incorrect result with reflection in low-trigger JIT When a recursive call happens with invalid arguments, the maximum valid arguments are computed and stored in `num_args`, but the RECV entry block we jump to is `call_num_args` instead. This can skip argument validation checks. Fix this by using `num_args` instead. Closes GH-16575.
show more ...
|
#
8b5668ef |
| 18-Oct-2024 |
Dmitry Stogov |
Fix invalid target opline with jit->reuse_ip active (#16457) This is an alternative for #16440
|
#
097edc86 |
| 15-Oct-2024 |
Dmitry Stogov |
Allow JIT for passing arguments to trampolines and "bad" functions (#16365) * Better trace coverage (JIT trampoline calls) * clenup trampoline by zend_jit_free_trampoline()
Allow JIT for passing arguments to trampolines and "bad" functions (#16365) * Better trace coverage (JIT trampoline calls) * clenup trampoline by zend_jit_free_trampoline() * Fix ZEND_JIT_TRACE_INIT_CALL/ZEND_JIT_TRACE_DO_ICALL num_args mismatch It may be caused by SEND_UNPACK/SEND_ARRAY * cleanup * cleanup * Don't record function that may be temporary * cleanup * Prevent invalid run_time_cache allocation for "bad" internal functions * Update zend_jit_trace_record_fake_init_call_ex() accordingly * Better handling of "bad" functions and fake closures
show more ...
|
#
b9a64c5e |
| 15-Oct-2024 |
Dmitry Stogov |
Fix GH-16358: Segmentation fault (access null pointer) in Zend/zend_operators.c:2495
|
#
57bfca90 |
| 10-Oct-2024 |
Dmitry Stogov |
JIT support for ASSIGN_DIM[_OP] with IS_VAR op1 (#16339)
|
#
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 ...
|
#
daba40c6 |
| 23-Sep-2024 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Fix GH-16009: Segmentation fault with frameless functions and undefined CVs The frameless function handlers do not update the op variables when handling the result is undefined. In this
Fix GH-16009: Segmentation fault with frameless functions and undefined CVs The frameless function handlers do not update the op variables when handling the result is undefined. In this case this causes propagating an UNDEF value into a temporary, which results in an extra undefined variable warning for a temporary in this case. The original issue also reports a crash in some cases, which is also fixed by this patch. Closes GH-16012.
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 ...
|
#
8f00430a |
| 24-Sep-2024 |
Dmitry Stogov |
Fix GH-15972: Assertion failure in ext/opcache/jit/zend_jit_vm_helpers.c with function JIT (#16001)
|
#
b2eff1f2 |
| 23-Sep-2024 |
Dmitry Stogov |
Merge branch 'PHP-8.3' * PHP-8.3: Fix GH-15973: Segmentation fault in JIT mode 1135 (#16006)
|
#
888eb370 |
| 14-Sep-2024 |
Peter Kokot |
Fix -Wundef/C4668 warnings (#15853) - ZTS is either undefined or defined (to 1) - PHP_WIN32 is either undefined or defined (to 1) - HAVE_LIBEDIT is either undefined or defined (to 1) |
#
98f07fcf |
| 12-Sep-2024 |
Dmitry Stogov |
Fix more issues reported in GH-15852 * Fix incorrect register allocation * Avoid IR binding/spilling conflict * Add missing type guard |
#
4c11168f |
| 09-Sep-2024 |
Dmitry Stogov |
Fix GH-15656: php8.4beta4 JIT erronous results (#15732) * Improve trace SSA construction and type inference * Fix incorrect abstract stack maintenance * Add missing regist
Fix GH-15656: php8.4beta4 JIT erronous results (#15732) * Improve trace SSA construction and type inference * Fix incorrect abstract stack maintenance * Add missing register store * Avoid IR binding for the dangerous case * Fix access to possibly uninitilezed variable * Improve trace SSA construction and type inference * Fix IR constuction Force load values into regesters before any branches to guarantee SSA dominance property
show more ...
|
#
25d76162 |
| 06-Sep-2024 |
Bob Weinand |
Make internal run_time_cache a persistent allocation (#15040) We also add zend_map_ptr_static, so that we do not incur the overhead of constantly recreating the internal run_time_cache point
Make internal run_time_cache a persistent allocation (#15040) We also add zend_map_ptr_static, so that we do not incur the overhead of constantly recreating the internal run_time_cache pointers on each request. This mechanism might be extended for mutable_data of internal classes too.
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 ...
|
#
faa1904f |
| 02-Sep-2024 |
Dmitry Stogov |
Merge branch 'PHP-8.3' * PHP-8.3: Fix GH-15652: Segmentation fault in the Zend engine when JIT enabled (#15717)
|
#
58aa6fc8 |
| 19-May-2023 |
Arnaud Le Blanc |
Lazy objects RFC: https://wiki.php.net/rfc/lazy-objects Closes GH-15019 |
#
8df557ac |
| 27-Aug-2024 |
Ilija Tovilo |
[RFC] Asymmetric visibility v2 (GH-15063) Co-authored-by: Larry Garfield <larry@garfieldtech.com> |
#
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 |
#
46ee0fb3 |
| 09-Aug-2024 |
Ilija Tovilo |
Disallow indirect modification on readonly properties within __clone() (#15012) Indirect modification isn't allowed in __construct() because it allows references to leak, so it doesn't m
Disallow indirect modification on readonly properties within __clone() (#15012) Indirect modification isn't allowed in __construct() because it allows references to leak, so it doesn't make much sense to allow it in __clone().
show more ...
|
#
7a2d5efa |
| 09-Aug-2024 |
Ilija Tovilo |
[JIT] Avoid generating fast property assign path for readonly properties (#15260) readonly properties will usually be IS_UNDEF on assignment, dodging the fast path anyway. The fast path
[JIT] Avoid generating fast property assign path for readonly properties (#15260) readonly properties will usually be IS_UNDEF on assignment, dodging the fast path anyway. The fast path does not handle the readonly scope check. The alternative would be handling scope there, but since there are some many variants that might be more trouble than it's worth.
show more ...
|
#
53b329e2 |
| 29-Jul-2024 |
Dmitry Stogov |
Fix GH-15101: _ir_RSTORE: Assertion `ctx->control' (#15153) |
#
a0a86243 |
| 25-Jul-2024 |
Ilija Tovilo |
Fix throw in IS_IDENTICAL in JIT (#15103) We need to persist opline in case zend_is_identical() throws. |