#
25acc4a6 |
| 12-May-2020 |
George Peter Banyard |
Fix [-Wundef] warning in Zend folder
|
#
53f5cfd9 |
| 12-May-2020 |
Nikita Popov |
Drop multi_convert_* APIs These are no longer used internally, and I'd rather they weren't used externally either.
|
#
4a816584 |
| 29-Feb-2020 |
Máté Kocsis |
Make float to string casts locale-independent From now on, float to string casting will always behave locale-independently. RFC: https://wiki.php.net/rfc/locale_independent_float_to_stri
Make float to string casts locale-independent From now on, float to string casting will always behave locale-independently. RFC: https://wiki.php.net/rfc/locale_independent_float_to_string Closes GH-5224 Co-authored-by: George Peter Banyard <girgias@php.net>
show more ...
|
#
e41f764b |
| 06-May-2020 |
Nikita Popov |
Revert "Move declaration at top of the block" This reverts commit b56f20385089703de7a3c9d89a9de4f9d14f56a3. We use C99 now, this is not needed anymore.
|
#
b56f2038 |
| 06-May-2020 |
Xinchen Hui |
Move declaration at top of the block
|
#
5bc1e224 |
| 01-Apr-2020 |
Nikita Popov |
Make numeric operations on resources, arrays and objects type errors RFC: https://wiki.php.net/rfc/arithmetic_operator_type_checks Closes GH-5331.
|
#
8ffbd465 |
| 04-May-2020 |
Nikita Popov |
Perform isupper check using sse2 as well Rather than just vectorizing the lowering, also vectorize the check for uppercase characters, using the same method.
|
#
d2c6bf20 |
| 28-Apr-2020 |
Xinchen Hui |
Folder mark
|
#
11491b63 |
| 28-Apr-2020 |
Xinchen Hui |
Also zend_str_tolower_dup_ex
|
#
58005d7b |
| 27-Apr-2020 |
Xinchen Hui |
Remove unnecessary register qualifier
|
#
6a500cb2 |
| 27-Apr-2020 |
Xinchen Hui |
SSE2 str_tolower
|
#
5430a466 |
| 02-Apr-2020 |
Nikita Popov |
Avoid control flow warning
|
#
cdaf3503 |
| 01-Apr-2020 |
Nikita Popov |
Improve "unsupported operands" error By mentioning the operand types. We can do that now, as the original operand types now remain available. Closes GH-5330.
|
#
9c0afc85 |
| 01-Apr-2020 |
Nikita Popov |
Remove op_func from TRY_BINARY_OP1 macro And move the operator overloading helpers into zend_operators.c, there's no reason for them to be in the header.
|
#
f182309e |
| 31-Mar-2020 |
Nikita Popov |
Refactor operator implementations Instead of looping, use straight-line code with the following layout: 1. Try to apply the base operation on the dereferenced operands. 2. T
Refactor operator implementations Instead of looping, use straight-line code with the following layout: 1. Try to apply the base operation on the dereferenced operands. 2. Try overloaded object operations. 3. Try to convert operands to number, else error out. 4. Apply the base operation on the converted operands. This makes the code easier to reason about and fixes some edge-case bugs: 1. We should only try invoking operator overloading once prior to type conversion. Previously it was invoked both before and after type conversion. 2. We should not modify any values if an exception is thrown. Previously we sometimes modified the LHS of a compound assignment operator. 3. If conversion of the first operand fails, we no longer try to convert the second operand. I think the previous behavior here was fine as well, but this still seems a more typical. This will also make some followup changes I have in mind simpler.
show more ...
|
#
944b10e3 |
| 31-Mar-2020 |
Nikita Popov |
Remove unused argument form convert_object_to_type()
|
#
0509a1e0 |
| 31-Mar-2020 |
Nikita Popov |
Clean up silent/noisy flag in convert_to_number
|
#
8fd7f02e |
| 31-Mar-2020 |
Nikita Popov |
Make cast_object handler required Avoid subtle differences in behavior depending on whether the handler is absent or returns FAILURE. If you previously set cast_object to NULL,
Make cast_object handler required Avoid subtle differences in behavior depending on whether the handler is absent or returns FAILURE. If you previously set cast_object to NULL, create a handler that always returns FAILURE instead.
show more ...
|
#
bef4b2e4 |
| 31-Mar-2020 |
Nikita Popov |
Report object cast failures internally Make cast_object return FAILURE for casts to int/float, rather than throwing a notice and returning SUCCESS. Instead move the emission of the n
Report object cast failures internally Make cast_object return FAILURE for casts to int/float, rather than throwing a notice and returning SUCCESS. Instead move the emission of the notice to the code invoking cast_object. This will allow us to customize the behavior per call-site. This change is written to be NFC, and the code in zend_std_compare_objects() should illustrate the current behavior doesn't make a lot of sense.
show more ...
|
#
26327bcd |
| 29-Oct-2019 |
Nikita Popov |
Throw "Unsupported operand types" error when using ** on arrays
|
#
c858d17f |
| 25-Oct-2019 |
Nikita Popov |
Optimize instanceof_function Split out the simple equality check into an inline function -- this is one of the common cases. Replace instanceof_function_ex with zend_class_imple
Optimize instanceof_function Split out the simple equality check into an inline function -- this is one of the common cases. Replace instanceof_function_ex with zend_class_implements_interface. There are a few more places where it may be used.
show more ...
|
#
184ba0c9 |
| 24-Oct-2019 |
Nikita Popov |
Remove recursive check from instanceof_interface Parent interfaces are copied into the interface list during inheritance, so there's no need to perform a recursive check. Only e
Remove recursive check from instanceof_interface Parent interfaces are copied into the interface list during inheritance, so there's no need to perform a recursive check. Only exception are instanceof checks performed during inheritance itself. However, we already have unlinked_instanceof for this purpose, it just needs to be taught to handle this case. Closes GH-4857.
show more ...
|
#
c63a0e00 |
| 24-Oct-2019 |
Nikita Popov |
Optimize instanceof_class/interface instanceof_class does not need to check for a NULL pointer in the first iteration -- passing NULL to this function is illegal. instanceof_int
Optimize instanceof_class/interface instanceof_class does not need to check for a NULL pointer in the first iteration -- passing NULL to this function is illegal. instanceof_interface does not need to use instanceof_class(), it only has to check whether the CEs match exactly. There is no way for an interface to appear inside "parent", it will always be in "interfaces" only.
show more ...
|
#
435f2691 |
| 24-Oct-2019 |
Nikita Popov |
Clean up and clarify instanceof_function_ex() The instanceof_interface_only() function was dead code (always returned zero). Clarify that the last parameter indicates whether th
Clean up and clarify instanceof_function_ex() The instanceof_interface_only() function was dead code (always returned zero). Clarify that the last parameter indicates whether the passed CE is interface or class and rewrite the code in terms of assertions.
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 ...
|