1
0
mirror of https://github.com/php/php-src.git synced 2026-04-25 08:58:28 +02:00
Commit Graph

722 Commits

Author SHA1 Message Date
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
Dmitry Stogov 4cf3da7383 Keep value of register before possible side exit 2020-11-23 12:07:05 +03:00
Dmitry Stogov c0d1dbcb43 Fixed incorrect TRACE_FRAME_MASK_NESTED flag setting 2020-11-20 18:22:21 +03:00
Dmitry Stogov c8df28d276 Fixed 32-bit JIT 2020-11-20 15:12:30 +03:00
Dmitry Stogov 069f9cbaa5 Added missing deoptimization code for trampoline handling 2020-11-19 12:32:36 +03:00
Dmitry Stogov feed041fc8 Fixed register clobbering 2020-11-18 10:22:25 +03:00
Dmitry Stogov 9841e8e411 Fixed trampoline handling 2020-11-17 23:56:05 +03:00
Dmitry Stogov e364af91b5 Fixed allocated register clobbering 2020-11-17 18:31:14 +03:00
Dmitry Stogov 1523733bc4 Fixed false pasitive ASAN NULL pointer dereference warning 2020-11-17 16:23:30 +03:00
Dmitry Stogov e3c63de05b Fixed alias handling 2020-11-16 16:11:25 +03:00
Dmitry Stogov eb6d496a93 Fixed reference-counting 2020-11-16 14:51:55 +03:00
Dmitry Stogov edf5c1901f Fixed incorrect FETCH_THIS optimization 2020-11-16 14:51:39 +03:00
Dmitry Stogov bd321df479 Fixed inconsistent VM stack state 2020-11-16 13:19:44 +03:00
Dmitry Stogov 64dc79f906 Trampoline cleanup 2020-11-16 12:05:45 +03:00
Dmitry Stogov 9acebe14df Fixed incorrectly eliminated type store 2020-11-11 20:13:58 +03:00
Dmitry Stogov 03e7854381 Remove assertion 2020-11-11 18:34:16 +03:00
Dmitry Stogov 2d2d42b268 Fixed incorrect invariant guard motion 2020-11-11 17:34:46 +03:00
Dmitry Stogov de359c00b4 Stop on fake frame 2020-11-11 14:54:54 +03:00
Dmitry Stogov a0de82ad75 Fixed reference-counting propagation 2020-11-11 14:54:00 +03:00
Dmitry Stogov 11c4821ba9 [Observer+JIT] Save opline before calling begin/end handlers 2020-11-11 13:50:53 +03:00
Dmitry Stogov 4bbe55b250 Fixed missaligned access 2020-11-09 11:50:26 +03:00
Dmitry Stogov 98e4f9466d Move stack overflow checks out of the loops 2020-11-06 12:09:56 +03:00
Dmitry Stogov ff91800602 Fixed incorrect invariant guard motion 2020-11-05 18:32:00 +03:00