Niels Dossche
a7d2703246
Correct check for maximum string length in JIT helpers
...
This is a bit of a theoretical issue, but the maximum string length is
actually ZSTR_MAX_LEN instead of SIZE_MAX. The resulting check is a bit
slower but should still be relatively cheap.
Closes GH-18049.
2025-03-13 23:47:45 +01:00
Niels Dossche
422e90db3b
Fix branch target in zend_jit_push_call_frame() ( #17949 )
...
Introduced by accident in 3b4a58da44 .
Will request a cherry-pick.
2025-02-28 09:20:02 +01:00
Niels Dossche
3b4a58da44
Backport GH-17869 to PHP 8.3 JIT
...
Closes GH-17918.
2025-02-24 21:45:03 +01:00
Niels Dossche
0c3cf1f311
Fix GH-17577: JIT packed type guard crash
...
When a guard check is created for a variable to check if it's a packed array,
it is possible that there was no prior type check for that variable.
This happens in the global scope for example when the variable aliases.
In the test, this causes a dereference of address 8 because the integer
element in `$a` is interpreted as an array address.
This patch adds a check to see if the guard is handled.
If we were not able to determine or guard the type then we also cannot know the array is packed.
Closes GH-17584.
2025-02-03 19:34:39 +01:00
Niels Dossche
f88445bdf8
Fix GH-17654: Multiple classes using same trait causes function JIT crash
...
This test has two classes that use the same trait. In function JIT mode
the same cache slot will be used. This causes problems because it is
primed for the first class and then reused for the second class,
resulting in an incorrect type check failure.
The current check for a megamorphic trait call requires current_frame to
not be NULL, but this is only set in tracing mode and not in function
mode.
This patch corrects the check.
Closes GH-17660.
2025-02-03 19:21:15 +01:00
Niels Dossche
e8fce295bc
Backport fix GH-17307
...
This is a backport of GH-17319 to fix GH-17307 on lower branches.
Closes GH-17424.
2025-01-10 18:24:25 +01:00
Dmitry Stogov
6bac907cb1
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Backport fix for GH-9011 (#17052 )
2024-12-05 18:32:18 +03:00
Dmitry Stogov
9d4f5f0762
Backport fix for GH-9011 ( #17052 )
...
* Backport fix for GH-9011
* Fix build
2024-12-05 18:32:02 +03:00
Niels Dossche
d50a56139c
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-16902: Set of opcache tests fail zts+aarch64 (8.2-8.3)
2024-11-25 19:50:05 +01:00
Niels Dossche
de96b43d2a
Fix GH-16902: Set of opcache tests fail zts+aarch64 (8.2-8.3)
...
Closes GH-16925.
2024-11-25 19:49:33 +01:00
Christoph M. Becker
58ed759ba7
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-16851: JIT_G(enabled) not set correctly on other threads
2024-11-20 19:12:40 +01:00
Dylan K. Taylor
ff3b4eca0e
Fix GH-16851: JIT_G(enabled) not set correctly on other threads
...
There doesn't seem to be a thread post-startup hook that runs after
zend_startup_cb() that could be used for this
this fix is similar to accel_startup_ok() as seen here: fc1db70f10/ext/opcache/ZendAccelerator.c (L2631-L2634)
Closes GH-16853.
2024-11-20 19:11:44 +01:00
Dmitry Stogov
d1a9281814
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Use the immutable twin of temporary op_array (#16861 )
2024-11-19 20:55:32 +03:00
Dmitry Stogov
ef5844a1ca
Use the immutable twin of temporary op_array ( #16861 )
2024-11-19 20:55:15 +03:00
Dmitry Stogov
c6c3d9fa5a
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Backport JIT fix: set valid EX(opline) before calling gc_possible_root() (#16858 )
2024-11-19 18:04:15 +03:00
Dmitry Stogov
6167c64782
Backport JIT fix: set valid EX(opline) before calling gc_possible_root() ( #16858 )
2024-11-19 18:03:54 +03:00
Dmitry Stogov
5575703fb3
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-16829: Segmentation fault with opcache.jit=tracing enabled on aarch64
2024-11-18 14:34:42 +03:00
Dmitry Stogov
79aaeeafe5
Fix GH-16829: Segmentation fault with opcache.jit=tracing enabled on aarch64
2024-11-18 14:27:08 +03:00
Niels Dossche
0bf74bf9d8
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-16770: Tracing JIT type mismatch when returning UNDEF
2024-11-14 22:34:05 +01:00
Niels Dossche
cbb3b9371d
Fix GH-16770: Tracing JIT type mismatch when returning UNDEF
...
When returning an UNDEF value, it actually becomes NULL.
The following code took this into account:
28344e0445/ext/opcache/jit/zend_jit_trace.c (L2196-L2199)
But the stack does not update the type to NULL, causing a mismatch.
Closes GH-16784.
Co-authored-by: Dmitry Stogov <dmitry@zend.com >
2024-11-14 22:33:06 +01:00
Dmitry Stogov
b9c6f07713
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix incorrect handling of ZEND_ACC_FINAL flag in JIT (#16778 )
2024-11-13 14:39:18 +03:00
Dmitry Stogov
19809a526b
Fix incorrect handling of ZEND_ACC_FINAL flag in JIT ( #16778 )
2024-11-13 14:38:54 +03:00
Dmitry Stogov
920e3d6b70
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-16499: [JIT] Undefined to null coercion issues for return
2024-10-21 14:51:31 +03:00
Dmitry Stogov
fe513655dc
Fix GH-16499: [JIT] Undefined to null coercion issues for return
2024-10-21 14:50:50 +03:00
Dmitry Stogov
dd45d85531
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-16393: Assertion failure in ext/opcache/jit/zend_jit.c:2897
2024-10-15 12:01:40 +03:00
Dmitry Stogov
bf786d0d28
Fix GH-16393: Assertion failure in ext/opcache/jit/zend_jit.c:2897
2024-10-15 12:00:59 +03:00
Dmitry Stogov
8b7f64fa41
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix possible NULL dereference
2024-09-26 15:44:05 +03:00
Dmitry Stogov
24d5912a30
Fix possible NULL dereference
2024-09-26 15:43:42 +03:00
Dmitry Stogov
e3507cba6f
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-15973: Segmentation fault in JIT mode 1135 (#16006 )
2024-09-23 17:09:17 +03:00
Dmitry Stogov
dc0987d154
Fix GH-15973: Segmentation fault in JIT mode 1135 ( #16006 )
2024-09-23 17:09:00 +03:00
Dmitry Stogov
43202d2bfa
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-15820: Core dumped with jit.opcache=1245
2024-09-10 15:44:24 +03:00
Dmitry Stogov
5cf045d357
Fix GH-15820: Core dumped with jit.opcache=1245
2024-09-10 15:42:23 +03:00
Niels Dossche
d2a5c98797
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-15658: Segmentation fault in Zend/zend_vm_execute.h
2024-09-09 20:26:44 +02:00
Niels Dossche
c1ffd4b484
Fix GH-15658: Segmentation fault in Zend/zend_vm_execute.h
...
Implement a minimal ZEND_MATCH handler using a tail call.
Closes GH-15782.
2024-09-09 20:26:16 +02:00
Dmitry Stogov
be8589651d
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-15652: Segmentation fault in the Zend engine when JIT enabled (#15717 )
2024-09-02 21:55:40 +03:00
Dmitry Stogov
1e78cf941c
Fix GH-15652: Segmentation fault in the Zend engine when JIT enabled ( #15717 )
2024-09-02 21:55:19 +03:00
Dmitry Stogov
12b854f91b
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-15502: Crash with JIT and Excimer (#15601 )
2024-08-27 21:12:43 +03:00
Dmitry Stogov
eb87de1c87
Fix GH-15502: Crash with JIT and Excimer ( #15601 )
2024-08-27 21:12:29 +03:00
Niels Dossche
d3992b6d09
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-14550: No warning message when Zend DTrace is enabled that opcache.jit is implictly disabled
2024-07-07 13:18:35 +02:00
Niels Dossche
b44ad27a78
Fix GH-14550: No warning message when Zend DTrace is enabled that opcache.jit is implictly disabled
...
Closes GH-14847.
2024-07-07 13:18:01 +02:00
Dmitry Stogov
e842ddfe4f
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-14475: PHP 8.3.7 with JIT encounters infinite loop on specific paths (#14558 )
2024-06-17 09:38:02 +03:00
Dmitry Stogov
350af549a0
Fix GH-14475: PHP 8.3.7 with JIT encounters infinite loop on specific paths ( #14558 )
2024-06-17 09:37:44 +03:00
Niels Dossche
3e8752169c
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-11188: Error when building TSRM in ARM64
2024-06-03 21:11:20 +02:00
nielsdos
644d3628e3
Fix GH-11188: Error when building TSRM in ARM64
...
Although the issue mentioned FreeBSD, this is a broader problem:
the current ARM64 code to load the TLS offset assumes a setup with
the non-default TLS model. This problem can also apply on some
configurations on other platforms.
Closes GH-11236.
2024-06-03 20:28:55 +02:00
Arnaud Le Blanc
5e895dda15
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix TLS access in JIT on FreeBSD/amd64
2024-05-28 15:43:59 +02:00
Arnaud Le Blanc
79862f24da
Fix TLS access in JIT on FreeBSD/amd64
...
DTV elements are 8 bytes in size a per ABI [1], and the index is offset by 1
on FreeBSD [2]
[1] http://people.redhat.com/drepper/tls.pdf
[2] bf56e8b9c8/libexec/rtld-elf/rtld.c (L5260)
Closes GH-13928
2024-05-28 15:42:57 +02:00
Dmitry Stogov
034bd85ad1
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix incorrect conditions
2024-05-28 08:37:48 +03:00
Dmitry Stogov
48ae025c33
Fix incorrect conditions
2024-05-28 08:37:20 +03:00
Ilija Tovilo
706e79761e
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix enabling of JIT at runtime
2024-05-22 14:33:25 +02:00
Ilija Tovilo
9506ca6001
Fix enabling of JIT at runtime
...
Fixes GH-14267
Closes GH-14294
2024-05-22 14:32:43 +02:00