#
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 ...
|
#
0c7124e6 |
| 23-Sep-2019 |
Christoph M. Becker |
Add check_only parameter to get_closure handler `get_closure` handlers are called to check whether an object is callable, and to actually get the closure, respectively. The behavior
Add check_only parameter to get_closure handler `get_closure` handlers are called to check whether an object is callable, and to actually get the closure, respectively. The behavior of the handler might differ for these two cases, particularly the handler may throw in the latter case, but should not in the former. Therefore we add a `check_only` parameter, to be able to distinguish the desired purpose.
show more ...
|
#
6276dd82 |
| 23-Sep-2019 |
Nikita Popov |
Use ZEND_TYPE_IS_SET() when checking for property types Instead of a simple if or 0 comparison. This would no longer work if zend_type is a struct.
|
#
d7ae1236 |
| 23-Sep-2019 |
Nikita Popov |
Canonicalize typed properties error message We have lots of other typed properties related error messages of the form "assign X to typed property Y::$z of type A", so use th same for
Canonicalize typed properties error message We have lots of other typed properties related error messages of the form "assign X to typed property Y::$z of type A", so use th same format for the primary message as well. Special-casing things like classes and nullability is not going to scale with future type-system extensions, and I don't think it really adds clarity either.
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 ...
|
#
cdd4e591 |
| 18-Sep-2019 |
Nikita Popov |
Don't make argument nullable based on AST null initializer Closes GH-4720.
|
Revision tags: php-7.4.0RC2 |
|
#
51d9f32d |
| 12-Sep-2019 |
Dmitry Stogov |
Fixed bug #78531 (Crash when using undefined variable as object
|
#
697266a8 |
| 12-Sep-2019 |
Dmitry Stogov |
Eliminate checks using ZEND_CONST_COND() macro
|
Revision tags: php-7.2.23RC1, php-7.3.10RC1 |
|
#
ee4b11c6 |
| 05-Sep-2019 |
Nikita Popov |
Detect calls to abstract methods in get_method() already Instead of checking for this during DO_FCALL, already detect this case during get_method()/get_static_method(), similar to visibi
Detect calls to abstract methods in get_method() already Instead of checking for this during DO_FCALL, already detect this case during get_method()/get_static_method(), similar to visibility checks. This causes a minor difference in behavior, in that arguments will no longer be evaluated. I think this is correct though (and consistent with visibility errors).
show more ...
|
#
b6f76aca |
| 04-Sep-2019 |
Nikita Popov |
Improve exception handling for abstract/deprecated calls Reuse existing arg freeing loop instead of duplicating it. Additionally also handle deprecated in DO_FCALL_BY_NAME.
|
#
4bb72827 |
| 04-Sep-2019 |
Nikita Popov |
Fix handling of abstract/deprecated exception The exception mechanism assumes that exceptions from DO_FCALL are already happening after the function call. This means that we are curr
Fix handling of abstract/deprecated exception The exception mechanism assumes that exceptions from DO_FCALL are already happening after the function call. This means that we are currently leaking the passed arguments, and I think we can also corrupt the VM stack due to incorrect frame linking in some cases (there are assertion failures if the VM stack page size is reduced). Instead handle the stack frame freeing manually for this special case.
show more ...
|
#
52d31bf1 |
| 03-Sep-2019 |
Nikita Popov |
Don't perform coercions in internal func return type assertion The returned value must match the specified type exactly, as we can't perform any coercions in non-debug builds. F
Don't perform coercions in internal func return type assertion The returned value must match the specified type exactly, as we can't perform any coercions in non-debug builds. Fix incorrect stub for easter_date() that slipped through the assertion for this reason...
show more ...
|
Revision tags: php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9 |
|
#
0038db22 |
| 26-Aug-2019 |
Nikita Popov |
Avoid duplicate "non well-formed" warning The arginfo checking code for internal functions should not generate this warning, as it will be thrown by zpp.
|
Revision tags: php-7.4.0beta4, php-7.2.22RC1, php-7.3.9RC1 |
|
#
d1fd4607 |
| 06-Aug-2019 |
Dmitry Stogov |
Inline zend_zval_ptr() in executor explicitely (only on hot paths)
|
Revision tags: php-7.4.0beta2, php-7.1.31, php-7.2.21, php-7.3.8 |
|
#
99d4b2bd |
| 24-Jul-2019 |
Nikita Popov |
Mark _get_zval_ptr_deref as unused
|
#
57d9b94d |
| 24-Jul-2019 |
Dmitry Stogov |
Simplify TMP/VAR operand releasing
|
Revision tags: php-7.4.0beta1 |
|
#
9e4603f7 |
| 24-Jul-2019 |
Nikita Popov |
Try to fix macos build By avoiding unused variable opline warnings. Also clean up the replacement of ZEND_VM_SPEC -- we were sometimes treating it as an always-defined constant with
Try to fix macos build By avoiding unused variable opline warnings. Also clean up the replacement of ZEND_VM_SPEC -- we were sometimes treating it as an always-defined constant with a value (what it actually is) and sometimes as a conditionally defined constant (which it isn't, but which still worked thanks to the specializer). Switch to only treating it as a constant with a value.
show more ...
|
Revision tags: php-7.2.21RC1, php-7.3.8RC1 |
|
#
0ba7c3ea |
| 11-Jul-2019 |
Nikita Popov |
Deprecate array_key_exists() on objects
|
#
ee582820 |
| 16-Jul-2019 |
Dmitry Stogov |
Separate "cold" and common unspecialized code
|
#
a0f450a0 |
| 16-Jul-2019 |
Nikita Popov |
Remove unused _get_zval_ptr_cv_BP_VAR_UNSET function To fix the macos -Werror build.
|
#
1d4c3842 |
| 16-Jul-2019 |
Dmitry Stogov |
Delay IS_UNDEF checks
|
#
ef1a1a06 |
| 11-Jul-2019 |
Dmitry Stogov |
Separate "cold" parts of comparison instructions
|
#
c42b7dd6 |
| 10-Jul-2019 |
Nikita Popov |
Throw notice on array access on illegal type No notice is thrown for list() accesses, because we did not come to an agreement regarding patterns like while ([$key, $value] =
Throw notice on array access on illegal type No notice is thrown for list() accesses, because we did not come to an agreement regarding patterns like while ([$key, $value] = yield $it->next()) { ... } where silent null access may be desirable. No effort is made to suppress multiple notices in access chains likes $x[0][0][0], because the technical complexity this causes does not seem worthwhile. RFC: https://wiki.php.net/rfc/notice-for-non-valid-array-container
show more ...
|
#
2bca35ea |
| 10-Jul-2019 |
Nikita Popov |
Rename support_strings to !is_list In preparation for more behavior that depends on whether it it is a list() access. Using support_strings for that would be confusing.
|
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
|