Nikita Popov
88a701aa02
Less conservative fix
...
I think it's reasonable to assume that the only possible types
are those that are declared, and null, because null is what
return_value is initialized to.
2020-04-28 15:55:02 +02:00
Nikita Popov
0da38cda6e
Fix JIT segfaults in FFI tests
...
Conservative fix that just disables this optimization.
2020-04-28 15:43:52 +02:00
Dmitry Stogov
790a08c885
Improve JIT code for FCALL with "fake" INIT and avoid fcall_guard if possible.
2020-04-28 13:05:56 +03:00
Nikita Popov
f38d6cea42
Check func_info consistency
...
Make sure explicitly specified func_info is a subset of
automatically computed info. This will at least prevent
cases where a type is removed from stubs, but not removed
from func_info.
Closes GH-5471.
2020-04-27 16:25:59 +02:00
Nikita Popov
c5f87eee5d
Mark passthru() as RC0
...
This function only returns null/false, RC1 does not make sense.
2020-04-27 15:39:31 +02:00
Nikita Popov
58eafbe734
Make array_rand() type info more accurate
2020-04-27 15:36:32 +02:00
Nikita Popov
cc8a8613b6
Remove MAY_BE_FALSE from range() type info
2020-04-27 15:36:32 +02:00
Máté Kocsis
a6960cfb05
Fix inaccurate func infos
...
Closes GH-5472
2020-04-27 15:35:44 +02:00
Nikita Popov
19e886d9d8
Avoid throw expression leaks
...
Mark "throw" used in expression context with a flag, and don't
treat it as a BB terminator in that case. This prevents us from
optimizing away the following opcodes as unreachable, which may
result in live ranges being dropped incorrectly.
Close GH-5450.
2020-04-27 15:22:05 +02:00
Dmitry Stogov
29fc6846d8
Fixed incorrect side exit address
2020-04-27 15:59:37 +03:00
Nikita Popov
a447897db0
Use information about classes returned by internal functions
2020-04-27 12:50:24 +02:00
Nikita Popov
41c7d28c11
Add macro to get ini target address
2020-04-27 10:30:00 +02:00
Dmitry Stogov
6ab2e82ab5
Avoid STORE of register inherited from parent trace
2020-04-24 16:32:31 +03:00
Dmitry Stogov
8a04d39d1c
Skip life range with LOAD and single use
2020-04-24 16:14:58 +03:00
Dmitry Stogov
9ddf9ac98e
cleanup
2020-04-24 16:14:44 +03:00
Dmitry Stogov
dc379e1c45
Abort register allocation if no candidates
2020-04-24 14:24:52 +03:00
Dmitry Stogov
13df3fcb0a
More accurate life range termination
2020-04-23 11:49:28 +03:00
Dmitry Stogov
11c698f1f3
Reorder conditions
2020-04-22 15:56:54 +03:00
Dmitry Stogov
572b799b52
Fixed register allocation constraints
2020-04-22 13:49:54 +03:00
Dmitry Stogov
94fba02621
Reuse registers allocated for parent trace in side traces
2020-04-21 17:34:31 +03:00
Dmitry Stogov
333a28ed58
Register allocation is useless if JIT just calls standarad VM handlers
2020-04-21 14:56:56 +03:00
Dmitry Stogov
832cfa15eb
Removed old TODO
2020-04-21 12:07:36 +03:00
Christoph M. Becker
321d9d9ae3
Fix OPcache build
...
`||` at the beginning of a line has special meaning for the DynAsm
preprocessor.
2020-04-20 17:40:16 +02:00
Dmitry Stogov
b0b43e86ae
Register allocator and deoptimizer for tracing JIT.
2020-04-20 16:02:03 +03:00
Tyson Andre
4e1219ac88
[skip ci] Fix typos in jit code comments
...
And in Opcache's zend_cfg.h
Closes GH-5414
2020-04-19 10:03:49 -04:00
Christoph M. Becker
a1eaaa692e
Fix #79475 : [JIT] func_get_args() assertion violation
...
`func_get_args()` may return `zend_empty_array`, which has refcount 2
to enforce separation. We have to cater to that during type inference
so that the optimization in the JIT macro `SEPARATE_ARRAY` doesn't
prevent the separation.
2020-04-17 09:53:23 +02:00
Dmitry Stogov
ea0110f0de
Improve registers reuse
2020-04-16 14:35:51 +03:00
Nikita Popov
00013401ff
Allow using prototypes when optimizing arg passing
...
Closes GH-5193.
2020-04-16 12:15:19 +02:00
Nikita Popov
dd163d05ff
Remove OP_RANGE_EX distinction
...
Only leave OP_RANGE macros, which always have the "EX" behavior.
This was already done for most other macros before, but these
were missed. This helps avoid mistakes by using the wrong macro.
2020-04-15 13:00:36 +02:00
Dmitry Stogov
99084262c3
Use proper macro
2020-04-15 13:09:55 +03:00
Dmitry Stogov
782dc8d73b
Removed unused parameter
2020-04-15 13:08:09 +03:00
Nikita Popov
bac5137e4e
Add zend_create_member_string() API
...
This is a recurring pattern.
2020-04-14 16:52:13 +02:00
Dmitry Stogov
11c5c78401
Added missed '~'
2020-04-14 15:37:20 +03:00
Dmitry Stogov
0a408be0d2
Separate zend_jit_dump_lifetime_interval() function
2020-04-10 16:10:19 +03:00
Dmitry Stogov
d3dda1e0f1
Fixed overflow handling
2020-04-10 14:42:26 +03:00
Dmitry Stogov
66f2ebe448
Register allocator refactoring
2020-04-09 19:31:18 +03:00
Nikita Popov
d030ddb2cd
Export the zend_string_concat3() API
2020-04-09 15:06:53 +02:00
Dmitry Stogov
41c2b275f7
cleanup
2020-04-09 14:33:29 +03:00
Dmitry Stogov
ba64b3fd41
Don't get number of passed arguments from "fake" INIT frames
2020-04-09 13:38:40 +03:00
Máté Kocsis
3709e74b5e
Store default parameter values of internal functions in arg info
...
Closes GH-5353. From now on, PHP will have reflection information
about default values of parameters of internal functions.
Co-authored-by: Nikita Popov <nikita.ppv@gmail.com >
2020-04-08 18:37:51 +02:00
Dmitry Stogov
3042b2b201
Dump information about trace side exits
2020-04-08 12:39:24 +03:00
Dmitry Stogov
f915b5516c
Update stack type, only if necessary
2020-04-08 10:34:24 +03:00
Dmitry Stogov
a172e056a0
Fixed TYPE/INFO mismatch
2020-04-08 00:27:19 +03:00
Dmitry Stogov
4e69970fb7
cleanup
2020-04-07 21:37:10 +03:00
Dmitry Stogov
cff7703a61
Revert "cleanup" (wrong commit)
...
This reverts commit 5db5f71f28 .
2020-04-07 21:34:18 +03:00
Dmitry Stogov
5db5f71f28
cleanup
2020-04-07 21:30:47 +03:00
Dmitry Stogov
864b1cc3ef
Free room for information about register allocation at astact stack and at trace_exit_info. Implement simple deoptimizer.
2020-04-07 12:01:48 +03:00
Dmitry Stogov
4006c0008e
Save CPU regesters on side exit for deoptimization
2020-04-06 23:48:20 +03:00
Dmitry Stogov
c4bdf41862
Minor register allocator refactoring
2020-04-06 16:17:02 +03:00
Máté Kocsis
21cfa03f17
Generate function entries for another batch of extensions
...
Closes GH-5352
2020-04-05 21:15:30 +02:00