Revision tags: php-7.4.5RC1, php-7.3.17RC1 |
|
#
064b4644 |
| 24-Mar-2020 |
Nikita Popov |
Implement "Constructor Promotion" RFC RFC: https://wiki.php.net/rfc/constructor_promotion Closes GH-5291. |
#
a7908c2d |
| 24-May-2020 |
Benjamin Eberlei |
Add Attributes Co-authored-by: Martin Schröder <m.schroeder2007@gmail.com> |
#
19e886d9 |
| 24-Apr-2020 |
Nikita Popov |
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 follow
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.
show more ...
|
#
08c5c69e |
| 17-Apr-2020 |
Nikita Popov |
Remove ZEND_ACC_DTOR flag This is only used in reflection, where doing a simple string check is acceptable. I'm also dropping the "dtor" printing in the reflection dump. Dto
Remove ZEND_ACC_DTOR flag This is only used in reflection, where doing a simple string check is acceptable. I'm also dropping the "dtor" printing in the reflection dump. Dtors are just one of many magic methods, I don't think there's a point in explicitly highlighting them, when the name is already unambiguous.
show more ...
|
#
bac5137e |
| 14-Apr-2020 |
Nikita Popov |
Add zend_create_member_string() API This is a recurring pattern. |
#
3709e74b |
| 06-Apr-2020 |
Máté Kocsis |
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 function
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>
show more ...
|
#
1ed132e2 |
| 01-Apr-2020 |
Nikita Popov |
Unify checks for binary operator errors for ct eval Move everything into one function and share it with opcache. This fixes some discrepancies. |
Revision tags: php-7.3.18, php-7.4.4, php-7.2.29, php-7.3.16, php-7.4.4RC1, php-7.3.16RC1 |
|
#
819a872c |
| 27-Feb-2020 |
Nikita Popov |
Avoid more null arithmetic |
#
1949a26a |
| 27-Feb-2020 |
Nikita Popov |
Remove more null arithmetic UB Introduce an EX_NUM_TO_VAR macro to mirror EX_VAR_TO_NUM and replace usages of the ZEND_CALL_VAR_NUM(NULL) pattern. |
#
0427ef91 |
| 27-Feb-2020 |
Nikita Popov |
Avoid null arithmetic UB in EX_VAR_TO_NUM |
Revision tags: php-7.4.3, php-7.2.28 |
|
#
53e527ad |
| 06-Feb-2020 |
Nikita Popov |
Remove ZEND_ACC_IMPLEMENT_INTERFACES flag This is equivalent to checking ce->num_interfaces. The only subtle moment is during inheritance, where num_interface may change when parent
Remove ZEND_ACC_IMPLEMENT_INTERFACES flag This is equivalent to checking ce->num_interfaces. The only subtle moment is during inheritance, where num_interface may change when parent interfaces are inherited. The check in zend_do_link_class thus uses "interfaces", not "ce->num_interfaces".
show more ...
|
#
f57f0920 |
| 06-Feb-2020 |
Nikita Popov |
Remove ZEND_ACC_IMPLEMENTS_TRAITS flag This is equivalent to checking ce->num_traits. |
#
4f5f72c7 |
| 06-Feb-2020 |
Nikita Popov |
Remove ZEND_ACC_INHERITED flag It is equivalent to checking ce->parent != NULL. Just adds more state that needs to be kept in sync. |
Revision tags: php-7.3.15RC1, php-7.4.3RC1 |
|
#
d6b04bfb |
| 03-Feb-2020 |
Derick Rethans |
Export zend_type_to_string() with ZEND_API |
Revision tags: php-7.3.15, php-7.2.27, php-7.4.2, php-7.3.14, php-7.3.14RC1, php-7.4.2RC1, php-7.4.1, php-7.2.26, php-7.3.13, php-7.4.1RC1, 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, php-7.3.11RC1, php-7.2.24RC1, php-7.4.0RC3 |
|
#
999e32b6 |
| 25-Sep-2019 |
Nikita Popov |
Implement union types According to RFC: https://wiki.php.net/rfc/union_types_v2 The type representation now makes use of both the pointer payload and the type mask at the same t
Implement union types According to RFC: https://wiki.php.net/rfc/union_types_v2 The type representation now makes use of both the pointer payload and the type mask at the same time. Additionall, zend_type_list is introduced as a new kind of pointer payload, which is used to store multiple class types. Each of the class types is a tagged pointer, which may be either a class name or class entry. The latter is only used for typed properties, while arguments/returns will instead use cache slots. A type list can contain a mix of both names and CEs at the same time, as not all classes may be resolvable. One thing this is missing is support for union types in arginfo and stubs, which I want to handle separately. I've also dropped the special object code from the JIT implementation for now -- I plan to add this back in a different form at a later time. For now I did not want to include non-trivial JIT changes together with large functional changes. Another possible piece of follow-up work is to implement "iterable" as an internal alias for "array|Traversable". I believe this will eliminate quite a few special-cases that had to be implemented. Closes GH-4838.
show more ...
|
Revision tags: php-7.2.23, php-7.3.10 |
|
#
ac4e0f08 |
| 20-Sep-2019 |
Nikita Popov |
Make zend_type a 2-field struct We now store the pointer payload and the type mask separately. This is in preparation for union types, where we will be using both at the same time.
Make zend_type a 2-field struct We now store the pointer payload and the type mask separately. This is in preparation for union types, where we will be using both at the same time. To avoid increasing the size of arginfo structures, the pass_by_reference and is_variadic fields are now stored as part of the type_mask (8-bit are reserved for custom use). Different types of pointer payloads are distinguished based on bits in the type_mask.
show more ...
|
#
9d48bf51 |
| 27-Oct-2019 |
Tyson Andre |
Fix miscellaneous typos in docs and error messages Closes GH-4863. |
#
626a5837 |
| 22-Oct-2019 |
Dmitry Stogov |
Merge branch 'PHP-7.4' * PHP-7.4: Allow loading FFI bindings through ffi.preload directive
|
#
1417352d |
| 22-Oct-2019 |
Dmitry Stogov |
Allow loading FFI bindings through ffi.preload directive |
#
f6f32f2c |
| 09-Oct-2019 |
Dmitry Stogov |
SAMRT BRANCH improvement. Avoid need of insertion NOP opcoes between unrelated SMART BRANCH instruction and following JMPZ/JMPNZ. Now instead of checking the opcode of following instruct
SAMRT BRANCH improvement. Avoid need of insertion NOP opcoes between unrelated SMART BRANCH instruction and following JMPZ/JMPNZ. Now instead of checking the opcode of following instruction, the same information is encoded into SMART BRANH result_type.
show more ...
|
#
56ae3f6c |
| 08-Oct-2019 |
Dmitry Stogov |
Added "const" qualifier |
#
a66c60cc |
| 26-Sep-2019 |
Nikita Popov |
Throw Error when writing property of non-object This removes object auto-vivification support. This also means that we can remove the corresponding special handling for typed pr
Throw Error when writing property of non-object This removes object auto-vivification support. This also means that we can remove the corresponding special handling for typed properites: We no longer need to check that a property is convertible to stdClass if such a conversion might take place indirectly due to a nested property write. Additionally OBJ_W style operations now no longer modify the object operand, and as such we no longer need to treat op1 as a def in SSA form. The next step would be to actually compile the whole LHS of OBJ_W operations in R rather than W mode, but that causes issues with SimpleXML, whose object handlers depend on the current compilation structure. Part of https://wiki.php.net/rfc/engine_warnings.
show more ...
|
#
9e8ba789 |
| 19-Sep-2019 |
Nikita Popov |
Change representation of zend_type from type code to MAY_BE_* mask This switches zend_type from storing a single IS_* type code to storing a MAY_BE_* type mask. Right now most code still
Change representation of zend_type from type code to MAY_BE_* mask This switches zend_type from storing a single IS_* type code to storing a MAY_BE_* type mask. Right now most code still assumes that there is only a single type in the mask (or two together with MAY_BE_NULL). But this will make it a lot simpler to introduce union types. An additional advantage (and why I'm doing this separately), is that a number of special cases no longer need to be handled separately: We can do a single mask & (1 << type) check to handle all simple types, booleans (true|false) and null.
show more ...
|
Revision tags: php-7.4.0RC2 |
|
#
a86e0487 |
| 13-Sep-2019 |
Nikita Popov |
Merge branch 'PHP-7.4'
|
#
ee0bf4b2 |
| 13-Sep-2019 |
Nikita Popov |
Define OBJ_PROP_TO_OFFSET() using XtOffsetOf() This avoids null pointer arithmetic UB. |