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