History log of /PHP-8.3/ext/opcache/jit/zend_jit.c (Results 1 – 25 of 295)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 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


# e502aaf0 04-Dec-2023 Dmitry Stogov

Prevent starting JIT on x86_64 with buffuer size above 2G


12345678910>>...12