Dmitry Stogov
6ec7d4c406
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Eliminate some repeatable IS_REFERENCE checks
2020-12-10 14:46:03 +03:00
Dmitry Stogov
dde5572937
Eliminate some repeatable IS_REFERENCE checks
2020-12-10 14:45:54 +03:00
Dmitry Stogov
d92b001d50
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Perform early guard type check for result of FETCH_CONSTANT
2020-12-09 22:25:04 +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
974b4429cd
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Fixed IS_32BIT/IS_SIGNED_32BIT mess
2020-12-09 17:17:25 +03:00
Dmitry Stogov
8d268e8443
Fixed IS_32BIT/IS_SIGNED_32BIT mess
2020-12-09 17:16:54 +03:00
Dmitry Stogov
75d7e606cc
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Avoid unnecessary checks
2020-12-08 13:11:05 +03:00
Dmitry Stogov
db34491a62
Avoid unnecessary checks
2020-12-08 13:10:35 +03:00
Dmitry Stogov
b9ee87583b
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Fixed bug #80480 (Segmentation fault with JIT enabled)
2020-12-07 13:29:11 +03:00
Dmitry Stogov
7971602574
Fixed bug #80480 (Segmentation fault with JIT enabled)
2020-12-07 13:28:37 +03:00
Christoph M. Becker
52bd07e204
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Fix failing VirtualProtect() calls
2020-12-02 16:53:43 +01: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
828f6806f3
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Bug #80447 (Strange out of memory error when running with JIT)
2020-12-01 16:43:41 +03: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
c3a6cf01af
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Skip test if JIT is not available
2020-12-01 09:59:25 +03:00
Dmitry Stogov
31eafedf2e
Skip test if JIT is not available
2020-12-01 09:58:33 +03:00
Dmitry Stogov
e1656bac7d
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Preallocate stack space for JIT in execute_ex() to eliminate JIT prologue/epilogue.
2020-11-30 17:56:32 +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
68520291af
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Fixed "may be used uninitialized" compilation warnings
2020-11-30 17:47:02 +03:00
Dmitry Stogov
5f36d0497f
Fixed "may be used uninitialized" compilation warnings
2020-11-30 17:46:43 +03:00
Dmitry Stogov
a3d0752a0a
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Hide phpdbg/JIT incompatibility macro (JIT is disabled for phpdbg)
2020-11-30 16:43:04 +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
034270d69a
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Disable JIT with incompatible third-party extensions
2020-11-30 13:59:33 +03:00
Dmitry Stogov
d5a82e2c4e
Disable JIT with incompatible third-party extensions
2020-11-30 13:58:34 +03:00
Nikita Popov
89891d75c3
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Only replace IN_ARRAY result type for JMPZ/JMPNZ
2020-11-30 11:19:13 +01:00
Nikita Popov
fdb05b92bf
Only replace IN_ARRAY result type for JMPZ/JMPNZ
...
Replacing the result type in the general case is dangerous,
because not all opcodes support both VAR and TMP. One common case
is the in_array() result being passed to SEND_VAR, which would
have to be changed to SEND_VAL.
Rather than complicating this logic, reduce the scope to only
doing the type replacement for JMPZ and JMPNZ. The only reason
we're doing this in the first place is to enable the smart branch
optimization, so we can limit it to the relevant opcodes. Replacing
the result type may be marginally useful in other cases as well
(as it may avoid reference checks), but not worth the bother.
2020-11-30 11:18:21 +01:00
Christoph M. Becker
b1a30d8ab1
Fix typos in comments
2020-11-28 13:52:46 +01:00
Nikita Popov
236eb60e96
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Respect strict_types during sccp function call evaluation
2020-11-27 20:24:25 +01:00
Nikita Popov
5b3809e942
Respect strict_types during sccp function call evaluation
...
Similar to what we do with attributes, add a dummy call frame
on which we can set the strict_types flag.
2020-11-27 20:24:00 +01:00
Tyson Andre
74f4586540
Remove duplicate str_split check, fix test expectation
2020-11-27 12:21:54 -05:00
Nikita Popov
99a3dbce81
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Don't check for throwing calls in sccp function evaluation
2020-11-27 17:50:48 +01:00
Nikita Popov
0ce9b5f755
Don't check for throwing calls in sccp function evaluation
...
We only need to reject functions that could warn (or have runtime
dependent behavior). If a function can throw in some cases, just
let it and discard the result.
2020-11-27 17:49:51 +01:00
Nikita Popov
30c89166ec
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Fix handling of sccp exceptions
2020-11-27 17:44:48 +01:00
Nikita Popov
a505fc627e
Fix handling of sccp exceptions
...
We should clear the exception *before* we destroy the execute_data.
Add a variation of the test that indirects through another file,
and would crash otherwise.
2020-11-27 17:44:30 +01:00
Nikita Popov
46428a843c
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Handle exceptions during SCCP function evaluation
2020-11-27 17:01:48 +01:00
Nikita Popov
e5aae35855
Handle exceptions during SCCP function evaluation
...
Easier to handle them than to ensure they can't happen in the
first place.
2020-11-27 17:00:12 +01:00
Nikita Popov
9234446ca0
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Avoid direct calls to zend_cpu_supports()
Assert that cpuinfo is initialized before use
Move avx check into a macro
2020-11-27 11:19:56 +01: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
877fa6b8a6
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Fixed bug #80433
2020-11-27 10:52:21 +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
0bb559bb24
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Eliminate dead stores
2020-11-26 21:05:29 +03:00
Dmitry Stogov
3697648be5
Eliminate deafd stores
2020-11-26 21:05:07 +03:00
Nikita Popov
7db29d2186
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Fixed bug #80377
2020-11-25 11:48:51 +01:00
Nikita Popov
4633e70ab1
Fixed bug #80377
...
Make sure the $PHP_THREAD_SAFETY variable is always available
when configuring extensions. It was previously available for
phpized extensions, but for in-tree builds it was being set
too late.
Then, use $PHP_THREAD_SAFETY instead of $enable_zts to check for
ZTS in bundled extensions, which makes sure these checks also
work for phpize builds.
2020-11-25 11:47:05 +01:00
Dmitry Stogov
e2227ddb05
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Use diferent temporary register (%r0 may keep a method address)
2020-11-25 03:50:55 +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
c4f4406349
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Revert "Fixed bug #80377 "
2020-11-25 01:13:21 +03:00
Dmitry Stogov
7fc2a3e15e
Revert "Fixed bug #80377 "
...
This reverts commit fc26ad9b12 .
2020-11-25 01:10:26 +03:00
Nikita Popov
36cfa11198
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Fixed bug #80377
2020-11-24 15:53:24 +01:00