#
2b279b42 |
| 31-Jan-2020 |
Dmitry Stogov |
We don't need "safe" destruction anymore
|
#
db7193f3 |
| 31-Jan-2020 |
Dmitry Stogov |
Fixed bug #79094 (Crashing when running recursion function)
|
#
9ec1ee59 |
| 10-Jan-2020 |
Nikita Popov |
Add support for deprecating constants Internal constants can be marked as CONST_DEPRECATED, in which case accessing them will throw a deprecation warning. For now this is only s
Add support for deprecating constants Internal constants can be marked as CONST_DEPRECATED, in which case accessing them will throw a deprecation warning. For now this is only supported on global constants, not class constants. Complain to me if you need to deprecate a class constant... Closes GH-5072.
show more ...
|
#
bd197728 |
| 16-Jan-2020 |
Nikita Popov |
Use zend_type inside type lists Instead of having a completely independent encoding for type list entries. This is going to use more memory, but I'm not particularly concerned about
Use zend_type inside type lists Instead of having a completely independent encoding for type list entries. This is going to use more memory, but I'm not particularly concerned about that, as type unions that contain multiple classes should be uncommon. On the other hand, this allows us to treat top-level types and types inside lists mostly the same. A new ZEND_TYPE_FOREACH macros allows to transparently treat list and non-list types the same way. I'm not using it everywhere it could be used for now, just the places that seemed most obvious. Of course, this will make any future type system changes much simpler, as it will not be necessary to duplicate all logic two times.
show more ...
|
#
d0d1654a |
| 08-Jan-2020 |
Nikita Popov |
Fix #49555: Improve "function must be a string" error message Be more specific for the individual cases and provide relevant type information.
|
#
bfe3f934 |
| 07-Jan-2020 |
George Peter Banyard |
Add warning and convert to exception in string offset assignment: Convert the empty string assignment to an Error as per RFC [1] Add a warning that only the first byte will be assigned t
Add warning and convert to exception in string offset assignment: Convert the empty string assignment to an Error as per RFC [1] Add a warning that only the first byte will be assigned to the offset if provided a needle that is longer than one byte. [1] https://wiki.php.net/rfc/engine_warnings
show more ...
|
#
f77747b0 |
| 30-Dec-2019 |
Nikita Popov |
Properly propagate url_stat exceptions during include Make sure we abort operations early, and that we don't emit additional warnings or errors if an exception has been thrown.
|
#
527ad1d8 |
| 19-Dec-2019 |
Nikita Popov |
Avoid signed integer overflow in string offset check Cast to size_t before performing operations instead of afterwards.
|
#
df08d6bf |
| 18-Dec-2019 |
Nikita Popov |
Fix leak in assign_ref with function As far as I can see, the retval copying is already done in all callers of this function, so it should not be duplicated here.
|
#
0301ab70 |
| 18-Dec-2019 |
Nikita Popov |
Fix const/cv freeing on failed reference assignment
|
#
7194825c |
| 17-Dec-2019 |
Nikita Popov |
Fix leak of dynamic property name in address helper
|
#
03d1c788 |
| 09-Dec-2019 |
Dmitry Stogov |
Export zend_init_func_run_time_cache()
|
#
aed2bf7a |
| 06-Dec-2019 |
Nikita Popov |
Remove unused function
|
#
0bac7854 |
| 06-Dec-2019 |
Nikita Popov |
Optimize return type checking Split off the fast-path case and avoid redundant checks.
|
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, 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 ...
|
#
14bdb0cf |
| 04-Nov-2019 |
Máté Kocsis |
Fix consistency issues with array accesses warnings/exceptions * Change a number of "resource used as offset" notices to warnings, which were previously missed. * Throw the "res
Fix consistency issues with array accesses warnings/exceptions * Change a number of "resource used as offset" notices to warnings, which were previously missed. * Throw the "resource used as offset" warning for isset() as well. * Make array_key_exists() behavior with regard to different key types consistent with isset() and normal array accesses. All key types now use the usual coercions and array/object keys throw TypeError. Closes GH-4887.
show more ...
|
#
c46b2ed6 |
| 04-Nov-2019 |
Nikita Popov |
Remove support for array_key_exists() with objects
|
#
bd7b1afd |
| 25-Oct-2019 |
Nikita Popov |
Check type is set when verifying variadic args Weird that there was no test for this... This code is somewhat inefficient, because it will be performed for every arg, rather tha
Check type is set when verifying variadic args Weird that there was no test for this... This code is somewhat inefficient, because it will be performed for every arg, rather than only once.
show more ...
|
#
d71a6ee5 |
| 24-Oct-2019 |
Nikita Popov |
Remove unnecessary type checks in verify_missing_return_type We don't emit VERIFY_RETURN_TYPE for void functions, so there's no need to check it here. It's always an error.
|
#
9666d7a7 |
| 24-Oct-2019 |
Nikita Popov |
Don't check ZEND_TYPE_IS_SET() in zend_check_type() Usually this function is only used if we already know that there is a type. Add checks to the places where we don't.
|
#
f8413887 |
| 23-Oct-2019 |
Nikita Popov |
Don't autoload when checking property types Noticed while working on union types: We do not load argument and return types during type checks, but we do load property types. I'm
Don't autoload when checking property types Noticed while working on union types: We do not load argument and return types during type checks, but we do load property types. I'm normalizing the behavior towards the existing status quo (not loading), though we may consider loading everywhere (all types, and instanceof) in order to properly support class aliases.
show more ...
|
#
fe6c420b |
| 23-Oct-2019 |
Nikita Popov |
JIT: Handle typed refs in assign dim
|
#
e80934d7 |
| 17-Oct-2019 |
Nikita Popov |
Pass cache slot when printing type errors Instead of using a separate ce.
|
#
5a076e67 |
| 10-Oct-2019 |
Nikita Popov |
Return error_zval form get_property_ptr_ptr on exception This goes in the reverse direction of 4463acb9513dfb62206760c49b3da1fe4d92f40a. After looking around a bit, it seems that we alre
Return error_zval form get_property_ptr_ptr on exception This goes in the reverse direction of 4463acb9513dfb62206760c49b3da1fe4d92f40a. After looking around a bit, it seems that we already check for Z_ISERROR_P() on the get_property_ptr_ptr return value in other places. So do this in zend_fetch_property_address() as well, and also make sure that EG(error_zval) is indeed returned on exception in get_property_ptr_ptr. In particular, this fixes the duplicate exceptions that we used to get because first get_property_ptr_ptr threw one and then read_property throws the same exception again.
show more ...
|