Nikita Popov
fabcd9f14e
Don't inline static call to instance method
...
Fixes the failure in bug79740.phpt with opcache.
2020-06-29 09:52:37 +02:00
Nikita Popov
733d84dbdf
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fixed bug #79535
2020-05-04 14:52:18 +02:00
Nikita Popov
7c1316ec6a
Fixed bug #79535
...
We did not allocate a cache slot for FETCH_CLASS. This is already
fixed on newer PHP versions.
2020-05-04 14:51:18 +02:00
Nikita Popov
59c8d6a863
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fix literal compaction collision between string and double
2020-04-01 14:22:27 +02:00
Nikita Popov
14b770d407
Fix literal compaction collision between string and double
...
For the sake of simplicity I'm using a separate hashtable, rather
than trying to do hash perturabation on the double strings.
2020-04-01 14:20:59 +02:00
Dmitry Stogov
91ee85c20c
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fixed bug #79412 (Opcache chokes and uses 100% CPU on specific script).
2020-03-25 17:31:33 +03:00
Dmitry Stogov
65120cfc09
Fixed bug #79412 (Opcache chokes and uses 100% CPU on specific script).
2020-03-25 17:31:06 +03:00
Nikita Popov
dd9b5c8680
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Handle NULL caller_call_opline
2020-03-23 17:12:12 +01:00
Nikita Popov
34f1266a9c
Handle NULL caller_call_opline
...
This can happen if there is an EXIT in the call arguments, in which
case the DO_CALL opcode may be eliminated as unreachable.
2020-03-23 17:12:01 +01:00
Dmitry Stogov
cb88184420
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fixed incorrect overflow detection
2020-02-27 23:38:09 +03:00
Dmitry Stogov
5b51b633e2
Fixed incorrect overflow detection
2020-02-27 23:37:41 +03:00
Nikita Popov
f70b552326
Fixed bug #79193
2020-01-30 14:55:58 +01:00
Dmitry Stogov
6ef7e53c1b
Fixed bug #78961 (erroneous optimization of re-assigned $GLOBALS)
2019-12-16 12:24:47 +03:00
Nikita Popov
2d03b638dc
Fix handling of non-final loop var free in sccp
...
We only need to preserve the FE_FREE that marks the end of the
loop range. Skip FE_FREEs with the FREE_ON_RETURN flag.
2019-12-12 09:39:52 +01:00
Nikita Popov
4313659bb9
Fix merge mistake
2019-12-10 09:03:44 +01:00
Nikita Popov
7e028a41e2
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fix DCE with FE_FETCH
2019-12-10 09:01:18 +01:00
Nikita Popov
87691e74e5
Fix DCE with FE_FETCH
...
For now, don't treat FE_FETCH op2 as no-val use. See GH-4982.
2019-12-10 09:00:09 +01:00
Nikita Popov
39b08ba99c
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fix print_r return types in opcache
2019-12-04 07:16:56 +01:00
Tyson Andre
c8e9aa854c
Fix print_r return types in opcache
...
https://www.php.net/print_r
> When the return parameter is TRUE, this function will return a string.
> Otherwise, the return value is TRUE.
2019-12-04 07:16:32 +01:00
Dmitry Stogov
49fcbb4810
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fixed wrong constant usage
2019-11-12 13:00:27 +03:00
Dmitry Stogov
9083e178f6
Fixed wrong constant usage
2019-11-12 12:59:50 +03:00
Nikita Popov
4d8541debb
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Fixed bug #78747
2019-10-25 12:50:26 +02:00
Nikita Popov
74699533e5
Merge branch 'PHP-7.2' into PHP-7.3
...
* PHP-7.2:
Fixed bug #78747
2019-10-25 12:50:12 +02:00
Nikita Popov
5249993814
Fixed bug #78747
2019-10-25 12:47:18 +02:00
Nikita Popov
6aece7be0a
Optimize VERIFY_RETURN_TYPE for TMP operands as well
...
Only exclude CONST operands, which use a different instruction
format (they have a return operand).
2019-10-25 11:37:19 +02:00
Nikita Popov
f07565b0eb
Check class linking in VERIFY_RETURN_TYPE optimization
...
instanceof_function() requires linked classes. I'm not reusing
unlinked_instanceof() here, because it performs class loading,
which wouldn't be right here, I think.
2019-10-25 11:24:32 +02:00
Nikita Popov
a6c9c7c2b8
Handle resources used as array keys consistently
...
Resources used as array keys are generally handled by throwing a
notice and converting the resource to the resource handle. The only
exception is the [$resource => null] syntax, where this was treated
as an illegal offset type instead. However, this also only happened
for VM evaluations, the AST evaluator did handle resources correctly.
2019-09-27 10:40:41 +02:00
Nikita Popov
5bee9c9062
Merge branch 'PHP-7.3' into PHP-7.4
2019-09-19 17:22:28 +02:00
Nikita Popov
85e7668129
Merge branch 'PHP-7.2' into PHP-7.3
2019-09-19 17:21:45 +02:00
Nikita Popov
003c13d7bc
Fix iterable return type optimization
2019-09-19 17:21:00 +02:00
Nikita Popov
62b440ffbb
Merge branch 'PHP-7.3' into PHP-7.4
2019-09-17 12:09:06 +02:00
Nikita Popov
f98684b06c
Merge branch 'PHP-7.2' into PHP-7.3
2019-09-17 12:08:57 +02:00
Tyson Andre
29bced9521
Fix opcache return type for get_headers in zend_func_info
...
https://www.php.net/manual/en/function.get-headers.php#refsect1-function.get-headers-examples
shows that it will return string keys when the second argument is
non-zero. I've verified that this is the case.
This bug was there since the initial commit in c88ffa9a56 .
Closes GH-4702.
2019-09-17 12:08:29 +02:00
Dmitry Stogov
af9b127fed
Make constant and copy propagation only for IS_TMP_VAR operands
2019-09-13 12:38:57 +03:00
Tyson Andre
3e89e9a636
Add opcache return type for random_int()
...
random_int() will throw for incorrect argument counts, types (e.g. float
that can't cast to int), or having min > max.
See ext/standard/random.c
2019-09-09 17:19:04 +02:00
Tyson Andre
45e529d673
Fix opcache zend_func_info for microtime/gettimeofday
...
microtime() doesn't return an array,
and gettimeofday() doesn't return a string.
See _php_gettimeofday in microtime.c (mode is non-zero for gettimeofday)
2019-09-09 17:13:19 +02:00
Tyson Andre
94e2f25f07
Add missing opcache return types for functions in spl
...
(excluding spl_autoload)
spl_object_id() is of the most interest to me,
since I frequently call it in an application.
This includes false/null types caused by wrong argument types and wrong argument
counts.
I can't rule out iterator_to_array returning null in spl_iterator_apply,
so leave MAY_BE_NULL in.
With review comments by nikic:
Co-Authored-By: Nikita Popov <nikita.ppv@googlemail.com >
2019-09-04 11:12:41 +02:00
Tyson Andre
4de8503c22
Add missing opcache return info for ext/standard.
...
array_key_first/last returns null for invalid args,
wrong argument counts, and empty arrays.
random_bytes returns a string or throws.
2019-09-03 09:57:51 +02:00
Tyson Andre
1a905bcb1e
Add new missing functions from ext/hash
2019-09-03 09:53:41 +02:00
Nikita Popov
632708ac02
Merge branch 'PHP-7.3' into PHP-7.4
2019-09-03 09:24:05 +02:00
Nikita Popov
d66e0f165d
Merge branch 'PHP-7.2' into PHP-7.3
2019-09-03 09:23:55 +02:00
Tyson Andre
9c3b7ccda5
Fix opcache return type for hash_update_stream
...
It can return false if the resource type is wrong.
```
php > var_export(hash_update_stream(hash_init('md5'),
imagecreate(1,1)));
Warning: hash_update_stream(): supplied resource is not a valid stream
resource in php shell code on line 1
false
```
The return types were initially added in
c88ffa9a56
2019-09-03 09:23:39 +02:00
Nikita Popov
774cdb1d59
Merge branch 'PHP-7.3' into PHP-7.4
2019-08-26 11:13:57 +02:00
Nikita Popov
e4ecadcb62
Merge branch 'PHP-7.2' into PHP-7.3
2019-08-26 11:13:49 +02:00
Tyson Andre
1e82a2d659
Also fix signature for passthru
...
Backported from a1a8d14485
https://www.php.net/manual/en/function.passthru.php#refsect1-function.passthru-returnvalues
`passthru()` is false with invalid args
`passthru('command')` is null.
2019-08-26 11:13:26 +02:00
Tyson Andre
f5bccc0eb5
Fix opcache optimizer info for time_nanosleep
...
This can also return an array. See
https://www.php.net/manual/en/function.time-nanosleep.php#refsect1-function.time-nanosleep-returnvalues
> If the delay was interrupted by a signal, an associative array will be
returned with the components:
>
> - seconds - number of seconds remaining in the delay
> - nanoseconds - number of nanoseconds remaining in the delay
Sending a SIGUSR1 to the below program would trigger this behavior.
```
pcntl_signal(\SIGUSR1, function ($signo, $signinfo) {
echo "Handling a signal $signo\n";
});
echo "Sleeping for 100 seconds\n";
var_export(time_nanosleep(100, 0));
```
The incomplete signature existed since c88ffa9a5 .
No phpt tests existed for time_nanosleep returning an array
2019-08-26 11:13:26 +02:00
Nikita Popov
a33361a37c
Merge branch 'PHP-7.2' into PHP-7.3
2019-08-13 11:22:41 +02:00
Nikita Popov
4eeb41d1ea
Fixed bug #77191
2019-08-13 11:19:58 +02:00
Nikita Popov
afd96392a3
Revert "Use RW fetch for argument unpacking"
...
This reverts commit 6913ec3282 .
This reverts commit a9e332e027 .
Causes https://bugs.php.net/bug.php?id=78356 , which I don't have
a good solution for.
2019-08-01 10:06:53 +02:00
Nikita Popov
a9e332e027
Handle RW UNPACK in inference
2019-07-30 10:31:51 +02:00