History log of /php-src/ext/opcache/jit/zend_jit_ir.c (Results 1 – 25 of 104)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 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.

12345