#
a60a9b4a |
| 01-Feb-2022 |
Dmitry Stogov |
Fix memory leak Fixes oss-fuzz #44222
|
Revision tags: php-8.0.0, php-7.3.25, php-7.4.13, php-8.0.0RC5, php-7.4.13RC1, php-8.0.0RC4, php-7.3.25RC1, php-7.4.12, php-8.0.0RC3, php-7.3.24, php-8.0.0RC2, php-7.4.12RC1, php-7.3.24RC1 |
|
#
fd81e708 |
| 07-Oct-2020 |
Dmitry Stogov |
Fixed incorrect behavior of observer API. ZEND_HANDLE_EXCEPTION might call zend_observer_fcall_end() even if exception is cought by function. The fix moved zend_observer_fcall_end() into a r
Fixed incorrect behavior of observer API. ZEND_HANDLE_EXCEPTION might call zend_observer_fcall_end() even if exception is cought by function. The fix moved zend_observer_fcall_end() into a right place and remove OBSERVER sepecialization for ZEND_HANDLE_EXCEPTION handler.
show more ...
|
Revision tags: php-7.2.34, php-8.0.0rc1, php-7.4.11, php-7.3.23 |
|
#
9e94bcfd |
| 17-Sep-2020 |
Sammy Kaye Powers |
Remove specialization of SPEC(OBSERVER) handlers
|
Revision tags: php-8.0.0beta4, php-7.4.11RC1, php-7.3.23RC1, php-8.0.0beta3 |
|
#
66c3e900 |
| 01-Sep-2020 |
Levi Morrison |
Add zend_observer API Closes GH-5857. Co-authored-by: Nikita Popov <nikita.ppv@gmail.com> Co-authored-by: Sammy Powers <sammyk@datadoghq.com>
|
Revision tags: php-7.4.10, php-7.3.22, php-8.0.0beta2, php-7.3.22RC1, php-7.4.10RC1, php-8.0.0beta1, php-7.4.9, php-7.2.33, php-7.3.21, php-8.0.0alpha3, php-7.4.9RC1, php-7.3.21RC1, php-7.4.8, php-7.2.32, php-8.0.0alpha2, php-7.3.20, php-8.0.0alpha1, php-7.4.8RC1, php-7.3.20RC1, php-7.4.7, php-7.3.19, php-7.4.7RC1, php-7.3.19RC1, php-7.4.6, php-7.2.31, php-7.4.6RC1, php-7.3.18RC1, php-7.2.30, php-7.4.5, php-7.3.17 |
|
#
d92229d8 |
| 06-Apr-2020 |
Nikita Popov |
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 nam
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.
show more ...
|
#
9bf11983 |
| 24-May-2020 |
Ilija Tovilo |
Implement nullsafe ?-> operator RFC: https://wiki.php.net/rfc/nullsafe_operator Closes GH-5619. Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
|
#
9fa1d133 |
| 09-Apr-2020 |
Ilija Tovilo |
Implement match expression RFC: https://wiki.php.net/rfc/match_expression_v2 Closes GH-5371.
|
Revision tags: php-7.4.5RC1, php-7.3.17RC1 |
|
#
df79277d |
| 18-Mar-2020 |
Nikita Popov |
Revert "Fetch for read in nested property assignments" This reverts commit bb43a3822e42dbd15b1d416a166549d3980b379a. After thinking about this a bit more, this is now going to be
Revert "Fetch for read in nested property assignments" This reverts commit bb43a3822e42dbd15b1d416a166549d3980b379a. After thinking about this a bit more, this is now going to be a complete solution for the "readonly properties" case, for example: unset($foo->readOnly->bar); should also be legal and $foo->readOnly['bar'] = 42; should also be legal if $foo->readOnly is not an array but an ArrayAccess object. I think it may be better to distinguish better on the BP_VAR flag level. Reverting for now.
show more ...
|
Revision tags: php-7.3.18, php-7.4.4, php-7.2.29, php-7.3.16 |
|
#
bb43a382 |
| 10-Mar-2020 |
Nikita Popov |
Fetch for read in nested property assignments $a->b->c = 'd'; is now compiled the same way as $b = $a->b; $b->c = 'd'; That is, we perform a read f
Fetch for read in nested property assignments $a->b->c = 'd'; is now compiled the same way as $b = $a->b; $b->c = 'd'; That is, we perform a read fetch on $a->b, rather than a write fetch. This is possible, because PHP 8 removed auto-vivification support for objects, so $a->b->c = 'd' may no longer modify $a->b proper (i.e. not counting interior mutability of the object). Closes GH-5250.
show more ...
|
Revision tags: php-7.4.4RC1, php-7.3.16RC1, php-7.4.3, php-7.2.28, php-7.3.15RC1, php-7.4.3RC1, php-7.3.15, php-7.2.27, php-7.4.2, php-7.3.14 |
|
#
d9335916 |
| 08-Jan-2020 |
Nikita Popov |
Add support for $obj::class This allows $obj::class, which gives the same result as get_class($obj). Anything other than an object results in TypeError. RFC: https://wiki.php.ne
Add support for $obj::class This allows $obj::class, which gives the same result as get_class($obj). Anything other than an object results in TypeError. RFC: https://wiki.php.net/rfc/class_name_literal_on_object Closes GH-5065.
show more ...
|
#
77bf144d |
| 14-Jan-2020 |
Dmitry Stogov |
Inline hot parts of bitwise instructions into hybrid VM
|
Revision tags: php-7.3.14RC1, php-7.4.2RC1, php-7.4.1, php-7.2.26, php-7.3.13, php-7.4.1RC1 |
|
#
dea62d4b |
| 07-Dec-2019 |
Tyson Andre |
Speed up ZEND_IS_IDENTICAL when it can't throw Add a specialized opcode handler to use for `===`/`!==` when: 1. At least one side is a $cv, and the other is a $cv or CONST (a
Speed up ZEND_IS_IDENTICAL when it can't throw Add a specialized opcode handler to use for `===`/`!==` when: 1. At least one side is a $cv, and the other is a $cv or CONST (avoids the need to free operands) 2. Neither operand can be undefined or a reference (avoids the need for error handling and dereferencing) ``` // Elapsed time decreased from 0.275 seconds to 0.243 seconds in combination // with PR #4982 function count_same(array $values) { $same = 0; foreach ($values as $x) { foreach ($values as $y) { if ($y === $x) { $same++; } } } return $same; } $values = range(0, 5000); $values[] = new stdClass(); $values[] = null; $values[] = 3; $start = microtime(true); $total = count_same($values); ```
show more ...
|
#
621842e3 |
| 20-Dec-2019 |
Dmitry Stogov |
RECV opcode optimization
|
Revision tags: php-7.3.13RC1, php-7.2.26RC1, php-7.4.0, php-7.2.25, php-7.3.12, php-7.4.0RC6, php-7.3.12RC1, php-7.2.25RC1, php-7.4.0RC5, php-7.1.33, php-7.2.24, php-7.3.11, php-7.4.0RC4 |
|
#
9c9a833f |
| 09-Oct-2019 |
Nikita Popov |
Actually remove the YIELD key specialization I only adjusted the code before, without switching to TMPVAR.
|
#
da3b2457 |
| 09-Oct-2019 |
Nikita Popov |
Reduce YIELD_FROM specialization Generator delegation is a complex compound operation, it does not make a lot of sense to optimize refcounting here to this degree.
|
#
2aba10be |
| 09-Oct-2019 |
Nikita Popov |
Reduce ZEND_THROW specialization Throwing is very expensive due to the need of gathering the backtrace, so it makes little sense to optimize refcounting to this degree.
|
Revision tags: php-7.3.11RC1, php-7.2.24RC1, php-7.4.0RC3, php-7.2.23, php-7.3.10, php-7.4.0RC2, php-7.2.23RC1, php-7.3.10RC1, php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4, php-7.2.22RC1, php-7.3.9RC1, php-7.4.0beta2, php-7.1.31, php-7.2.21, php-7.3.8 |
|
#
853b426e |
| 24-Jul-2019 |
Dmitry Stogov |
Avoid over-specialization
|
Revision tags: php-7.4.0beta1 |
|
#
1eb70617 |
| 24-Jul-2019 |
Nikita Popov |
Avoid references in TMP var Make sure we deref the OBJ_IS result, because we store it in a TMP var, which is not allowed to contain references and will cause assertion failures in th
Avoid references in TMP var Make sure we deref the OBJ_IS result, because we store it in a TMP var, which is not allowed to contain references and will cause assertion failures in the unspecialized VM. This also partially reverts fd463a9a6078074f8f648982b42bdd14423fb614, which merged the TMP and VAR specializations of COALESCE to work around this bug. An alternative would be to change the result type of OBJ_IS back to VAR.
show more ...
|
#
b30e4a5a |
| 17-Jul-2019 |
Dmitry Stogov |
Avoid extra specialization for cold opcodes
|
#
918f09f7 |
| 17-Jul-2019 |
Dmitry Stogov |
Added specialization for comparison instructions and QM_ASSIGN
|
#
349a388b |
| 16-Jul-2019 |
Dmitry Stogov |
Slit INC/DEC opcodes into hot/cold parts and remove specialized versioins for LONG_OR_DOUBLE.
|
Revision tags: php-7.2.21RC1, php-7.3.8RC1 |
|
#
ef1a1a06 |
| 11-Jul-2019 |
Dmitry Stogov |
Separate "cold" parts of comparison instructions
|
#
be94c0c3 |
| 11-Jul-2019 |
Dmitry Stogov |
Separate "cold" parts of binary op instructions
|
#
e1f418dd |
| 09-Jul-2019 |
Dmitry Stogov |
Remove duplicated code for (PRE|POST)_DEC_(OBJ|STATIC_PROP) opcodes
|
Revision tags: php-7.4.0alpha3 |
|
#
48ca5a1e |
| 05-Jul-2019 |
Dmitry Stogov |
Replace ZEND_ASSIGN_ADD (and others) by ZEND_ASSIGN_OP, ZEND_ASSIGN_DIM_OP, ZEND_ASSGIN_OBJ_OP and ZEND_ASSIGN_STATIC_PROP_OP
|