Dmitry Stogov
99c0efc77a
JIT/x86: Fixed possible incorrect exception catching in function JIT.
2021-06-30 18:16:38 +03:00
Dmitry Stogov
ced8e88438
JIT/x86: Fixed possible incorrect register allocation
2021-06-17 18:42:11 +03:00
Dmitry Stogov
1082669e24
JIT: Fixed failures of tracing JIT with CALL VM
...
This fixes:
- tests/lang/bug28800.phpt
- Zend/tests/settype_resource.phpt
- Zend/tests/type_declarations/scalar_return_basic_64bit.phpt
2021-06-17 14:21:40 +03:00
Dmitry Stogov
ac65f6af6e
Fixed bug #81051 (Broken property type handling after incrementing reference)
2021-05-27 15:22:34 +03:00
Dmitry Stogov
11a7310b49
Disable ASSIGN + SEND_VAL fusion for cases when destroying of old value may throw an exception.
2021-05-21 13:36:58 +03:00
Dmitry Stogov
025c0763e7
Fix register save/restore around calls. (This fixes
...
ext/opcache/tests/jit/fetch_dim_rw_001.phpt with -d opcache.jit=1202
without PROFITABILITY_CHECKS)
2021-05-21 11:08:56 +03:00
Dmitry Stogov
bf21261c63
Add missing undefined variable warning an result initialization.
...
(This fixes Zend/tests/bug78531.phpt without PROFITABILITY_CHECKS).
2021-05-21 10:03:00 +03:00
Dmitry Stogov
db309b2e4b
Don't assign to string offset after exception (This fixes
...
Zend/tests/bug31098.phpt failure without PROFITABILITY_CHECKS)
2021-05-21 00:48:24 +03:00
Dmitry Stogov
cce0cc8836
JIT: Fixed incorrect condition (this leaded to
...
Zend/tests/type_declarations/typed_properties_083.phpt failure without
PROFITABILITY_CHECKS)
2021-05-21 00:01:00 +03:00
Dmitry Stogov
6e2d47e071
Fixed bug #80968 (JIT segfault with return from required file)
2021-05-20 16:45:24 +03:00
Dmitry Stogov
e96b984026
Fixed JIT on first function execution (opcache.jit=1215) with CALL VM
2021-05-12 12:24:18 +03:00
Dmitry Stogov
6fa4493f7b
Fixed incorrect stack size calculation (sizeof(zval) == 16)
2021-05-12 02:08:53 +03:00
David Carlier
d87d2f006c
opcache: more reliable way to get the current binary on solaris/illumos
...
Closes GH-6920.
2021-05-06 14:33:53 +02:00
twosee
d4a206b276
Backport "ignore some opcodes in the JIT check"
...
This is a backport of fc64a7bef4 to the PHP-8.0 branch so that extensions don’t have to bypass the JIT check in a hacky way.
2021-04-19 14:28:15 +08:00
Dmitry Stogov
7e494d9225
Fixed bug #80861 (erronous array key overflow in 2D array with JIT)
2021-03-17 22:59:59 +03:00
Dmitry Stogov
faf1567212
Fixed bug #80839 (PHP problem with JIT)
2021-03-17 16:55:09 +03:00
Dmitry Stogov
3b377b51a2
Fixed bug #80814 (threaded mod_php won't load on FreeBSD: No space available for static Thread Local Storage)
2021-03-10 16:03:47 +03:00
Dmitry Stogov
b7fa5268e4
Fixed bug #80782 (DASM_S_RANGE_VREG on PHP_INT_MIN-1)
2021-02-24 12:20:20 +03:00
Nikita Popov
79cf2c56d3
Fixed bug #80786
...
Don't use r0 as temporary register in math_double_long if it is
already used for a memory result.
This was already done in one branch, but not the other.
2021-02-23 10:22:00 +01:00
Dmitry Stogov
7f68a7afe6
Fixed bug #80745 (JIT produces Assert failure and UNKNOWN:0 var_dumps in code involving bitshifts)
2021-02-17 11:51:13 +03:00
Dmitry Stogov
fad87a24da
Fixed bug #80742 (Opcache JIT makes some boolean logic unexpectedly be true)
2021-02-16 20:02:12 +03:00
Dmitry Stogov
64622979f9
Fixed observer API and JIT compatibility
2021-01-26 21:31:15 +03:00
Alex Samorukov
527bcb1e2e
Fix opcache phpize build on FreeBSD
...
Closes GH-6589.
2021-01-25 15:10:47 +01:00
Dmitry Stogov
6288228b56
Fixed bug #80634 (write_property handler of internal classes is skipped on preloaded JITted code)
2021-01-20 11:03:37 +03:00
Dylan K. Taylor
872f302b8d
Keep JIT region executable under ZTS
...
When one thread tries to compile a script, another thread may
already be executing JITed code. In this case we can't make the
memory non-executable.
This violates the W^X principle, but doesn't seem to be avoidable
for ZTS builds for now. The same problem does not exist for NTS,
as it's a different process executing there, which has it's own
memory protection mapping.
Closes GH-6595.
2021-01-19 10:25:42 +01:00
Nikita Popov
fbd8e20ed5
Observe unused return values in JIT
...
Even if the return value is not used, it should still be available
to the observer.
2021-01-19 10:09:53 +01:00
Dmitry Stogov
3edf5c969a
Fixed bug #80422 (php_opcache.dll crashes when using Apache 2.4 with JIT)
2021-01-14 08:16:27 +03:00
Dmitry Stogov
35e0506a2e
Add guard if lvalue of assignment may be a reference, but wasn't a reference during recording
2021-01-11 15:12:27 +03:00
Dmitry Stogov
da0ca53f39
Initialize EX(call)->func by single instruction
2020-12-29 13:20:10 +03:00
Dmitry Stogov
56fde2a381
Reuse value stored in %r0 instead of immediate operand
2020-12-29 13:18:56 +03:00
Dmitry Stogov
23bbff2b05
Eliminate redundand comparison insructions
2020-12-24 16:58:54 +03:00
Ayesh Karunaratne
724e241c9d
JIT: Update invalid opcache.jit INI value message to include "tracing" and "function" values
...
`opcache.jit` accepts `tracing` and `function` as aliases, but they were not mentioned in the start-up INI warning message.
This updates the error message to include all possible values.
Closes GH-6490.
2020-12-15 10:18:33 +01:00
Dmitry Stogov
dde5572937
Eliminate some repeatable IS_REFERENCE checks
2020-12-10 14:45:54 +03:00
Dmitry Stogov
e9f9e9f863
Perform early guard type check for result of FETCH_CONSTANT
2020-12-09 22:24:03 +03:00
Dmitry Stogov
8d268e8443
Fixed IS_32BIT/IS_SIGNED_32BIT mess
2020-12-09 17:16:54 +03:00
Dmitry Stogov
db34491a62
Avoid unnecessary checks
2020-12-08 13:10:35 +03:00
Dmitry Stogov
7971602574
Fixed bug #80480 (Segmentation fault with JIT enabled)
2020-12-07 13:28:37 +03:00
Christoph M. Becker
72cd5793be
Fix failing VirtualProtect() calls
...
Whenever JIT is disabled due to incompatibilities, we also need to set
`JIT_G(on)` to zero.
Closes GH-6470.
2020-12-02 16:51:50 +01:00
Dmitry Stogov
1674c96c0b
Bug #80447 (Strange out of memory error when running with JIT)
2020-12-01 16:43:05 +03:00
Dmitry Stogov
841b00f641
Preallocate stack space for JIT in execute_ex() to eliminate JIT prologue/epilogue.
2020-11-30 17:56:08 +03:00
Dmitry Stogov
5f36d0497f
Fixed "may be used uninitialized" compilation warnings
2020-11-30 17:46:43 +03:00
Dmitry Stogov
a0baa09b99
Hide phpdbg/JIT incompatibility macro (JIT is disabled for phpdbg)
2020-11-30 16:42:17 +03:00
Dmitry Stogov
d5a82e2c4e
Disable JIT with incompatible third-party extensions
2020-11-30 13:58:34 +03:00
Nikita Popov
2772f7c3ad
Avoid direct calls to zend_cpu_supports()
...
While the use of zend_cpu_supports_*() is only strictly necessary
inside ifunc resolvers, where the cpu state has not been initialized
yet, we should prefer the compiler builtins in all cases.
2020-11-27 11:18:10 +01:00
Nikita Popov
4a7ebb6d83
Move avx check into a macro
2020-11-27 11:06:05 +01:00
Nikita Popov
48ff654fb9
Fixed bug #80433
...
Use ZEND_STRTOL to allow leading zeros in opcache.jit option.
2020-11-27 10:51:57 +01:00
Dmitry Stogov
3697648be5
Eliminate deafd stores
2020-11-26 21:05:07 +03:00
Dmitry Stogov
cb399d0410
Use diferent temporary register (%r0 may keep a method address)
2020-11-25 03:49:42 +03:00
Dmitry Stogov
337d2af6ca
zend_jit_trace_stack_frame.stack can't be NULL
2020-11-23 16:19:22 +03:00
Dmitry Stogov
586ccfdfd5
Fixed use-after-free in PHPUnit tests
2020-11-23 14:42:38 +03:00