History log of /PHP-8.3/Zend/zend_vm_execute.h (Results 251 – 275 of 1980)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: 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 ...


# c46b2ed6 04-Nov-2019 Nikita Popov

Remove support for array_key_exists() with objects


Revision tags: php-7.4.0RC2, php-7.2.23RC1, php-7.3.10RC1, php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4, php-7.2.22RC1, php-7.3.9RC1, php-7.4.0beta2, php-7.1.31, php-7.2.21, php-7.3.8, php-7.4.0beta1, php-7.2.21RC1, php-7.3.8RC1, php-7.4.0alpha3, php-7.3.7, php-7.2.20, php-7.4.0alpha2, php-7.3.7RC3, php-7.3.7RC2, php-7.2.20RC2, php-7.4.0alpha1, php-7.3.7RC1, php-7.2.20RC1, php-7.2.19, php-7.3.6, php-7.1.30, php-7.2.19RC1, php-7.3.6RC1, php-7.1.29, php-7.2.18, php-7.3.5, php-7.2.18RC1, php-7.3.5RC1, php-7.2.17, php-7.3.4, php-7.1.28, php-7.3.4RC1, php-7.2.17RC1, php-7.1.27, php-7.3.3, php-7.2.16, php-7.3.3RC1, php-7.2.16RC1
# aef88361 13-Feb-2019 Nikita Popov

Don't check $this existence in object opcodes

We are now guaranteed that $this always exists inside methods, as
well as insides closures (if they use $this at all).

This removes

Don't check $this existence in object opcodes

We are now guaranteed that $this always exists inside methods, as
well as insides closures (if they use $this at all).

This removes checks for $this existence from the individual object
opcodes. Instead ZEND_FETCH_THIS is used in the cases where $this
is not guaranteed to exist, which is mainly the pseudo-main scope.

Closes GH-3822.

show more ...


# 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 ...


# 96c84b7b 10-Oct-2019 Nikita Popov

Fix leak on static method call on non-existent class


# b093abcd 10-Oct-2019 Nikita Popov

Fix exception handling for call_user_func_array() with invalid type

Now that this throws an exception, the call frame cleanup will be
handled by exception handling -- remove it here to a

Fix exception handling for call_user_func_array() with invalid type

Now that this throws an exception, the call frame cleanup will be
handled by exception handling -- remove it here to avoid double
frees.

show more ...


# 9c9a833f 09-Oct-2019 Nikita Popov

Actually remove the YIELD key specialization

I only adjusted the code before, without switching to TMPVAR.


# 165a065a 09-Oct-2019 Nikita Popov

Reduce YIELD key specialization

Keeping the value specialization for now, which is more commonly
applicable.


# da3b2457 09-Oct-2019 Nikita Popov

Reduce YIELD_FROM specialization

Generator delegation is a complex compound operation, it does not
make a lot of sense to optimize refcounting here to this degree.


# 2aba10be 09-Oct-2019 Nikita Popov

Reduce ZEND_THROW specialization

Throwing is very expensive due to the need of gathering the backtrace,
so it makes little sense to optimize refcounting to this degree.


# 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 ...


# bea832cb 08-Oct-2019 Nikita Popov

Don't check type of simple parameter default values

After fixing the int->double coercion case, this is already verified
at compile-time, so there is no need to redo this type check on

Don't check type of simple parameter default values

After fixing the int->double coercion case, this is already verified
at compile-time, so there is no need to redo this type check on
every call.

Only perform the type check every time for the case of AST default
values.

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 ...


# eec04f6b 08-Oct-2019 Dmitry Stogov

Encapsulate all SMART BRANCH related logic inside macros. Result of SMART BRANCH may be uninitialized (on exception).


# b02b8129 07-Oct-2019 Dmitry Stogov

Comparison cleanup:

- introduce zend_compare() that returns -1,0,1 dirctly (without intermediate zval)
- remove compare_objects() object handler, and keep only compare() handler


# 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 ...


# 9372b687 30-Sep-2019 Dmitry Stogov

Restore "avoid exception check" optimization and add EG(exception) check only on slow path.


# 38b19d47 27-Sep-2019 Nikita Popov

Convert "Only arrays and Traversables can be unpacked" into Error


# 2354aa96 26-Sep-2019 Nikita Popov

Add test for illegal unset/isset offset

Weirdly these warnings had zero coverage previously...

Remove an incorrect exception checking optimization: The key
lookup may throw (it

Add test for illegal unset/isset offset

Weirdly these warnings had zero coverage previously...

Remove an incorrect exception checking optimization: The key
lookup may throw (it could also throw previously, though only
through a custom error handler).

show more ...


# 0ebf2bdb 26-Sep-2019 Nikita Popov

Convert "Illegal offset type" warnings to exceptions


# a6c9c7c2 27-Sep-2019 Nikita Popov

Handle resources used as array keys consistently

Resources used as array keys are generally handled by throwing a
notice and converting the resource to the resource handle. The only

Handle resources used as array keys consistently

Resources used as array keys are generally handled by throwing a
notice and converting the resource to the resource handle. The only
exception is the [$resource => null] syntax, where this was treated
as an illegal offset type instead. However, this also only happened
for VM evaluations, the AST evaluator did handle resources correctly.

show more ...


# 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 ...


1...<<11121314151617181920>>...80