Dmitry Stogov
6f36b20abf
Don't add guard for empty()
2020-08-18 13:13:58 +03:00
Dmitry Stogov
5d94ff8a00
JIT extension may be NULL
2020-08-18 09:28:13 +03:00
Dmitry Stogov
fd0b57d48b
Fixed support for named arguments
2020-08-18 00:12:05 +03:00
Dmitry Stogov
3343eb64d7
Fixed trace type inference for FE_FETCH_R/RW
2020-08-17 22:55:25 +03:00
Dmitry Stogov
32052e7470
Fixed support for possible indirect variable modification (ext/standard/tests/array/bug77135.phpt failure).
2020-08-17 22:31:03 +03:00
Dmitry Stogov
afc93e44e5
JIT for ZEND_ISSET_ISEMPTY_CV
2020-08-17 20:48:48 +03:00
Dmitry Stogov
28e24e7acc
Fixed JIT for indirectly recursive traces
2020-08-17 20:47:06 +03:00
Dmitry Stogov
a02237d2a9
Removed outdated/duplicated code
2020-08-17 15:24:33 +03:00
Dmitry Stogov
8202b4ed09
Properly patch jmp tables
2020-08-17 13:50:03 +03:00
Nikita Popov
75baa729f5
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fixed bug #79917
2020-08-11 14:59:04 +02:00
Nikita Popov
4609ded082
Fixed bug #79917
...
op_arrays can be shared on two levels: Either the op_array is
completely shared, or it is distinct but shares all members
(apart from static_variables).
The the op_array is distinct, we need to make sure to properly
initialize the MAP_PTR structures.
2020-08-11 14:58:54 +02:00
Nikita Popov
c439f1fa6a
Fixed bug #62294
...
The primary issue was already resolved in 7c3e487289 ,
but the particular example used in this bug report ran into an
additional issue on PHP 8, because I forgot to drop a number of
zend_bailout calls when switch require failure to throw.
2020-08-10 12:54:02 +02:00
Máté Kocsis
7aacc705d0
Add many missing closing PHP tags to tests
...
Closes GH-5958
2020-08-09 22:03:36 +02:00
David Carlier
327db7e595
opcache gdb: Set the EI_OSABI value for NetBSD.
...
Closes GH-5948.
2020-08-07 17:00:32 +02:00
Nikita Popov
643145b59d
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fixed bug #79930
Fix iov_base pointer type for illumos
Backport bless_tests.php changes from PHP 8
2020-08-05 15:44:04 +02:00
Nikita Popov
9d9fa32fe5
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fix iov_base pointer type for illumos
2020-08-05 15:18:03 +02:00
David Carlier
12db8b90a7
Fix iov_base pointer type for illumos
...
These systems has two versions of the iovec interface dependent on
compiler flags passed, the legacy version causing little build issue.
Closes GH-5939.
2020-08-05 15:17:51 +02:00
David Carlier
362194165a
Fix opcache JIT on NetBSD with PaX
...
When PaX mprotect active, opcache JIT test fail as it needs
the PROT_MPROTECT macro to be able to allow further permission
promotion with mprotect.
Closes GH-5929.
2020-08-04 10:34:31 +02:00
Benjamin Eberlei
53ef244923
Add opcache.jit=tracing|function values, make on/yes/true synonym for tracing.
2020-08-04 10:15:22 +02:00
Máté Kocsis
4c89ed61fb
Promote warnings to exceptions in ext/gettext, ext/sysvmsg and ext/xml
...
Closes GH-5926
2020-08-03 20:09:28 +02:00
Nikita Popov
c48b745f00
Promote "undefined array key" notice to warning
...
This implements the last remaining part of the
https://wiki.php.net/rfc/engine_warnings RFC.
Closes GH-5927.
2020-08-03 14:40:50 +02:00
Nikita Popov
d92229d8c7
Implement named parameters
...
From an engine perspective, named parameters mainly add three
concepts:
* The SEND_* opcodes now accept a CONST op2, which is the
argument name. For now, it is looked up by linear scan and
runtime cached.
* This may leave UNDEF arguments on the stack. To avoid having
to deal with them in other places, a CHECK_UNDEF_ARGS opcode
is used to either replace them with defaults, or error.
* For variadic functions, EX(extra_named_params) are collected
and need to be freed based on ZEND_CALL_HAS_EXTRA_NAMED_PARAMS.
RFC: https://wiki.php.net/rfc/named_params
Closes GH-5357.
2020-07-31 15:53:36 +02:00
Dmitry Stogov
b3e12325f6
Fixed JIT when result of ASSIGN is in register, but the original variable might need to be destroyed
2020-07-31 12:31:46 +03:00
Nikita Popov
47e4001976
Remove more unused func_info fields
2020-07-30 18:50:12 +02:00
Dmitry Stogov
8ea9e1ae4c
We check result type guard in FETCH_DIM_R/IS only if index is long or string.
2020-07-30 19:19:10 +03:00
Nikita Popov
9dacc85251
Add type inference support for RECV_VARIADIC
2020-07-30 17:14:34 +02:00
Nikita Popov
104b7addc4
Remove unused recv_arg_info from func_info
2020-07-30 17:04:56 +02:00
Nikita Popov
ce22cf5198
Remove some dead code in RECV type inference
...
We must always have arg_info corresponding to RECV.
2020-07-30 16:55:21 +02:00
Dmitry Stogov
28eaad0969
Clear result type for exit point caused by JMPZ_EX/NZ_EX
2020-07-30 17:01:08 +03:00
Dmitry Stogov
8b43976483
Fixed memory leaks caused by incorrect AVOID_REFCOUNTING flag
2020-07-30 16:59:41 +03:00
Dmitry Stogov
41de27ecc2
Skip tests leaking because of preloading failure.
2020-07-30 14:04:14 +03:00
Nikita Popov
3690a805c1
Check non-zero in is_power_of_two()
...
And assert non-zero in floor_log2().
Fixes DASM_S_RANGE_I in ext/simplexml/tests/021.phpt.
2020-07-30 10:17:37 +02:00
Dmitry Stogov
bbbccf0811
Force type update if the previous value was in register only
2020-07-30 01:32:23 +03:00
Dmitry Stogov
713d3ea4e6
Don't skip fcall guard for method calls from trait
2020-07-30 00:31:46 +03:00
Dmitry Stogov
44384dfb3e
Fixed temporary register usage
2020-07-29 22:01:19 +03:00
Christoph M. Becker
d95c53834c
Amendment to OPcache base file removal
...
We fix the erroneous segment size. We also keep the segment pointer at
the allocated address, but increase the position instead.
2020-07-29 18:44:08 +02:00
Christoph M. Becker
88a3bdd1e4
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fix #73060 : php failed with error after temp folder cleaned up
2020-07-29 18:31:28 +02:00
Christoph M. Becker
2bcc419800
Fix #73060 : php failed with error after temp folder cleaned up
...
Instead of storing the mapping base address and the address of
`execute_ex()` in a separate file in the temporary folder, we store
them right at the beginning of the memory mapping.
2020-07-29 18:21:05 +02:00
Nikita Popov
d8d2a7801a
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Consider op1 literal of FETCH_OBJ_R
2020-07-29 17:05:42 +02:00
Nikita Popov
f8ff8bb767
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Consider op1 literal of FETCH_OBJ_R
2020-07-29 17:05:35 +02:00
Nikita Popov
57ad5b3432
Consider op1 literal of FETCH_OBJ_R
...
FETCH_OBJ_R may have an op1 CONST operand, even though it will
always error. We should take this into account when compacting
literals.
2020-07-29 17:04:23 +02:00
Dmitry Stogov
9e80558047
Load ptoper IP value
2020-07-29 17:37:01 +03:00
Dmitry Stogov
02fae1fc53
Fixed bug #79888 (Incorrect execution with JIT enabled)
2020-07-29 17:32:57 +03:00
Dmitry Stogov
0ef0ea5810
Temporary disable abstract test usage for inferring previous type of variables (previous value may be in CPU register and type of the stack slot may be inconsistent).
2020-07-29 14:58:41 +03:00
Christoph M. Becker
da0f3279ea
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Revert "Merge branch 'PHP-7.3' into PHP-7.4"
2020-07-29 13:38:53 +02:00
Christoph M. Becker
826b90a5f0
Revert "Merge branch 'PHP-7.3' into PHP-7.4"
...
This reverts commit e1f6ab3388 , reversing
changes made to e0ebe56ebf .
There are obviously issues with running tests in parallel, maybe
related to the cache ID. This needs to be investigated. Revert for
now.
2020-07-29 13:32:59 +02:00
Dmitry Stogov
5f2adfb690
Fixed live-range interval construction (close all frames)
2020-07-29 13:11:27 +03:00
Christoph M. Becker
fc3439a7b3
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fix #73060 : php failed with error after temp folder cleaned up
2020-07-29 10:17:22 +02:00
Christoph M. Becker
e1f6ab3388
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fix #73060 : php failed with error after temp folder cleaned up
2020-07-29 10:11:29 +02:00
Christoph M. Becker
9a744c66e7
Fix #73060 : php failed with error after temp folder cleaned up
...
Instead of storing the mapping base address and the address of
`execute_ex()` in a separate file in the temporary folder, we store
them right at the beginning of the memory mapping.
2020-07-29 10:07:23 +02:00