#
4463acb9 |
| 10-Oct-2019 |
Nikita Popov |
Explicitly check for exceptions in by-ref obj prop assign Relying on setting ERROR if an exception happened during the property address fetch is both a bit fragile and may pessimize
Explicitly check for exceptions in by-ref obj prop assign Relying on setting ERROR if an exception happened during the property address fetch is both a bit fragile and may pessimize other codepaths that will check for exceptions in the VM. Adding an extra exception check instead, which should also allow us to drop the use of ERROR in this area in master.
show more ...
|
#
382f9b28 |
| 10-Oct-2019 |
Nikita Popov |
Fix leak on "Cannot assign by reference to overloaded object" error
|
#
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 ...
|
#
21148679 |
| 08-Oct-2019 |
Nikita Popov |
Handle "non well formed" exception during ZPP Previously if the "non well formed" notice was converted into an exception we'd still end up executing the function. Also drop the
Handle "non well formed" exception during ZPP Previously if the "non well formed" notice was converted into an exception we'd still end up executing the function. Also drop the now unnecessary EG(exception) checks in the engine. Additionally remote a bogus exception in zend_is_callable: It should only be writing to error, but not directly throwing.
show more ...
|
#
31c3b0c7 |
| 08-Oct-2019 |
Dmitry Stogov |
Fixed Zend/tests/bug70785.phpt on builds wothout global regesters
|
#
eec04f6b |
| 08-Oct-2019 |
Dmitry Stogov |
Encapsulate all SMART BRANCH related logic inside macros. Result of SMART BRANCH may be uninitialized (on exception).
|
#
ad3ddf46 |
| 08-Oct-2019 |
Nikita Popov |
Fixed bug #78644 Make sure the initialize the result of FETCH_OBJ_UNSET operations. I'm using a NULL value rather than ERROR here, because the latter no longer exists in master.
|
#
57670c67 |
| 07-Oct-2019 |
Nikita Popov |
Check num required args is correct in debug builds Also replace the assertion failure with an E_CORE_ERROR that includes the function name, so these are easier to debug.
|
#
2f92957f |
| 01-Oct-2019 |
Nikita Popov |
Convert some notices to warnings Part of https://wiki.php.net/rfc/engine_warnings.
|
#
01fc1a30 |
| 27-Sep-2019 |
Nikita Popov |
Remove most uses of the ERROR type It is now only used to signal exceptions for property reads. ERROR zvals are never returned back to the VM anymore, so there's no need to check for
Remove most uses of the ERROR type It is now only used to signal exceptions for property reads. ERROR zvals are never returned back to the VM anymore, so there's no need to check for them when receiving a VAR. Also return MAY_BE_ERROR, as ERROR is now no longer relevant for inference.
show more ...
|
#
e8b0163e |
| 27-Sep-2019 |
Nikita Popov |
Promote write "use scalar as array" warning to Error
|
#
0ebf2bdb |
| 26-Sep-2019 |
Nikita Popov |
Convert "Illegal offset type" warnings to exceptions
|
#
f2b09969 |
| 26-Sep-2019 |
Nikita Popov |
Convert "cannot add element" warning to exception
|
#
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 ...
|