Nikita Popov
331e56ce38
Remove mbstring.func_overload
...
Deprecated in PHP 7.2 as part of
https://wiki.php.net/rfc/deprecations_php_7_2 .
2019-01-28 15:58:23 +01:00
Nikita Popov
768bc7a0b8
Merge branch 'PHP-7.3'
2019-01-28 09:23:53 +01:00
Nikita Popov
ab3c94a54f
Merge branch 'PHP-7.2' into PHP-7.3
2019-01-28 09:23:23 +01:00
ekinhbayar
ef68cd3249
Fixed bug #77530 : PHP crashes when parsing "(2)::class"
2019-01-28 09:22:18 +01:00
Nikita Popov
b93aefc1a7
Fix assign to self detection
2019-01-27 20:50:08 +01:00
rjhdby
3a0fc00424
zend_compile.c: zend_is_variable(). Removed unnecessary checks. Naming according to internal logic.
2019-01-27 08:38:08 +01:00
Nikita Popov
1d984cc707
Merge branch 'PHP-7.3'
2019-01-24 10:58:24 +01:00
Nikita Popov
e0f97ae7ec
Merge branch 'PHP-7.2' into PHP-7.3
2019-01-24 10:57:45 +01:00
Nikita Popov
526344aa5e
Add flag to disable jumptable optimization
...
This is useful for coverage. While it is currently safe to just
skip over the SWITCH_* opcodes, this may not be true in the future
due to opcache optimizations, so it's safer to disable emission of
SWITCH_* opcodes entirely.
2019-01-24 10:56:04 +01:00
Nikita Popov
a50198d0fe
Implement ??= operator
...
RFC: https://wiki.php.net/rfc/null_coalesce_equal_operator
$a ??= $b is $a ?? ($a = $b), with the difference that $a is only
evaluated once, to the degree that this is possible. In particular
in $a[foo()] ?? $b function foo() is only ever called once.
However, the variable access themselves will be reevaluated.
2019-01-22 11:12:04 +01:00
Dmitry Stogov
960f922ed2
Fixed odd ROPE_ADD instruction placement.
2019-01-21 23:34:09 +03:00
Nikita Popov
3269e88468
Implement single-pass live range calculation
...
Instead of interleaving creation of live-ranges with the main
compiler code, compute them in a separate pass over the opcodes
as part of pass_two. Additionally, do not keep live ranges
synchronized during optimization in opcache and instead use the
same mechanism to recompute them after optimization.
2019-01-21 11:47:27 +01:00
Nikita Popov
e219ec144e
Implement typed properties
...
RFC: https://wiki.php.net/rfc/typed_properties_v2
This is a squash of PR #3734 , which is a squash of PR #3313 .
Co-authored-by: Bob Weinand <bobwei9@hotmail.com>
Co-authored-by: Joe Watkins <krakjoe@php.net>
Co-authored-by: Dmitry Stogov <dmitry@zend.com>
2019-01-11 15:49:06 +01:00
Nikita Popov
9ca217f506
Resolve parent::class at compile-time if possible
...
And remove some dead code.
2019-01-04 12:10:22 +01:00
Nikita Popov
a9e6667817
Detect invalid uses of parent:: during compilation
...
We already detect the case where we're entirely outside a class --
now also check whether there actually is a parent.
This is a minor BC break, in that code that was never executed
might have previously contained an invalid parent:: reference without
generating an error.
2019-01-04 11:55:41 +01:00
Nikita Popov
447b3470de
Support parent::class inside constexpr contexts
2019-01-04 11:46:57 +01:00
Nikita Popov
f58846a15d
Handle self::class separately from __CLASS__ in const eval
2019-01-04 11:46:57 +01:00
Nikita Popov
9b3fda4342
Don't replace self::class with __CLASS__ during const eval
...
Instead delay this until const expression compilation. Otherwise
self::class and [self::class] have different behavior...
2019-01-04 11:16:59 +01:00
Nikita Popov
290adc4132
Introduce separate ZEND_AST_CLASS_NAME AST node
...
Instead of representing this as a ZEND_AST_CLASS_CONST with a
"class" constant name.
Class constants and ::class are unrelated features that happen to
share syntax, so represent and handle them separately.
2019-01-04 10:49:23 +01:00
Nikita Popov
03094c7af3
Merge branch 'PHP-7.3'
2019-01-04 09:53:36 +01:00
Nikita Popov
1ed20669c5
Merge branch 'PHP-7.2' into PHP-7.3
2019-01-04 09:53:30 +01:00
Nikita Popov
41af1e6781
Fix self::class inside constant in global scope
...
Previously this triggered an assertion failure. The behavior is
not quite correct, in that self::class should generate an exception
if there is no self, but returns an empty string here. Fixing that
would be a bit too intrusive for the 7.2 branch.
2019-01-04 09:52:04 +01:00
Nikita Popov
f9208e9bf8
Merge branch 'PHP-7.3'
2019-01-02 11:34:24 +01:00
Nikita Popov
613683580b
Merge branch 'PHP-7.2' into PHP-7.3
2019-01-02 11:34:15 +01:00
Nikita Popov
73596c56e7
Partial fix for bug #75426
...
This does not print the exact line of the comma, but rather the line
of the previous element. This should generally be "good enough", as
the line number is close (off by one) to the actual issue now.
Previously it would point to the start of the array, which may be
very far away.
2019-01-02 11:32:48 +01:00
Nikita Popov
636b1c3d26
Drop _ex from zend_compile_class_ref_ex
...
The non-ex version no longer exists.
2019-01-02 09:56:40 +01:00
Michael Moravec
f5044a12dd
Implement ZEND_ARRAY_KEY_EXISTS opcode to speed up array_key_exists()
2018-12-26 23:54:11 +03:00
Dmitry Stogov
636b16402b
Fixed crashes introduced by 7e597f48e9
(only master was affected)
2018-12-25 23:30:59 +03:00
Dmitry Stogov
773ed62555
Merge branch 'PHP-7.3'
...
* PHP-7.3:
Fixed bug #77339 (__callStatic may get incorrect arguments)
2018-12-24 13:25:24 +03:00
Dmitry Stogov
ddfb44f2cf
Merge branch 'PHP-7.2' into PHP-7.3
...
* PHP-7.2:
Fixed bug #77339 (__callStatic may get incorrect arguments)
2018-12-24 13:23:47 +03:00
Dmitry Stogov
7e597f48e9
Fixed bug #77339 (__callStatic may get incorrect arguments)
2018-12-24 13:22:43 +03:00
Nikita Popov
6debea2fd8
Merge branch 'PHP-7.3'
2018-12-10 13:36:54 +01:00
Nikita Popov
93aabf1533
Fixed bug #77275
...
Instead of juggling with this problem during literal compaction,
make sure that we always initialize Z_EXTRA for literals, which
seems like the more robust solution.
2018-12-10 13:36:23 +01:00
Dmitry Stogov
f12e6a076f
Reorder conditions
2018-12-07 19:21:26 +03:00
Dmitry Stogov
99658f682e
Improve zend_check_live_ranges()
2018-12-07 18:15:14 +03:00
Dmitry Stogov
be4c67a40a
Stop passing CG(active_op_array) between internal compiler functions.
2018-12-07 17:47:56 +03:00
Gabriel Caruso
cdd8368d6f
Clean up unnecessary ternary expressions and simplify some returns
...
- Simplify conditions
- Use ZEND_HASH_APPLY_* instead of hard-coded booleans
- Use ZEND_NORMALIZE_BOOL
- Drop sign in favor of ZEND_NORMALIZE_BOOL
2018-12-03 01:22:14 +01:00
Nikita Popov
9adc8d546c
Merge branch 'PHP-7.3'
2018-11-27 19:44:52 +01:00
Nikita Popov
12e88781e1
Merge branch 'PHP-7.2' into PHP-7.3
2018-11-27 19:44:45 +01:00
Nikita Popov
b565c85b9e
Improve fix for #76046
...
Also locate the JMP at the start of the foreach.
Patch suggested by Derick.
2018-11-27 19:43:25 +01:00
Nikita Popov
6faa625cb8
Merge branch 'PHP-7.3'
2018-11-27 16:39:35 +01:00
Nikita Popov
d78211aec0
Merge branch 'PHP-7.2' into PHP-7.3
2018-11-27 16:39:21 +01:00
Nikita Popov
d6595f276f
Fixed bug #76046
...
Place FE_FREE on start line of foreach, instead of whatever random
line number might be in CG(zend_lineno) at the time.
2018-11-27 16:37:55 +01:00
Levi Morrison
74d15b535a
Remove do_bind_inherited_class; use do_bind_class
...
Pass NULL as the second parameter. I don't know if in the past these
differed more, but there isn't any point to having both of them
anymore.
2018-11-07 18:54:00 +01:00
Zeev Suraski
9afce019e0
Future-proof email addresses
2018-11-01 18:35:32 +02:00
Zeev Suraski
54dc07f3dc
Update email addresses. We're still @Zend, but future proofing it...
2018-11-01 17:20:07 +02:00
Dmitry Stogov
3fe698b904
Mark "top-level" functions.
2018-10-19 13:22:29 +03:00
Dmitry Stogov
9226695c22
Mark "top-level" classes
2018-10-17 16:12:46 +03:00
Dmitry Stogov
d57cd36e47
Immutable clases and op_arrays.
...
Squashed commit of the following:
commit cd0c36c3f9
Merge: 4740dabb84
ad6738e886
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 14:43:38 2018 +0300
Merge branch 'master' into immutable
* master:
Remove the "auto" encoding
Fixed bug #77025
Add vtbls for EUC-TW encoding
commit 4740dabb84
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 14:12:28 2018 +0300
Reverted back ce->iterator_funcs_ptr. Initialize ce->iterator_funcs_ptr fields in immutable classes.
commit ad7a78b253
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:46:30 2018 +0300
Added comment
commit 0276ea5187
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:42:43 2018 +0300
Added type cast
commit c63fc5d5f1
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:36:51 2018 +0300
Moved static class members initialization into the proper place.
commit b945548e93
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:21:03 2018 +0300
Removed redundand assertion
commit d5a4108840
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:19:13 2018 +0300
Removed duplicate code
commit 8dadca8864
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 11:05:43 2018 +0300
Hide offset encoding magic in ZEND_MAP_PTR_IS_OFFSET(), ZEND_MAP_PTR_OFFSET2PTR() and ZEND_MAP_PTR_PTR2OFFSET() macros.
commit 9ef07c88bd
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 10:48:29 2018 +0300
typo
commit a06f0f3d3a
Merge: 94099586ec
3412345ffe
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Oct 17 10:47:07 2018 +0300
Merge branch 'master' into immutable
* master:
Remove unused variable makefile_am_files
Classify object handlers are required/optional
Add support for getting SKIP_TAGSTART and SKIP_WHITE options
Remove some obsolete config_vars.mk occurrences
Remove bsd_converted from .gitignore
Remove configuration parser and scanners ignores
Remove obsolete buildconf.stamp from .gitignore
[ci skip] Add magicdata.patch exception to .gitignore
Remove outdated ext/spl/examples items from .gitignore
Remove unused test.inc in ext/iconv/tests
commit 94099586ec
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Oct 15 23:34:01 2018 +0300
Immutable clases and op_arrays
2018-10-17 15:52:50 +03:00
Peter Kokot
902d39a3a7
Trim trailing whitespace in source code files
2018-10-13 14:14:50 +02:00